C++ sort排序之降序、升序使用总结

C++ sort排序之降序、升序使用总结

介绍

sort函数是C++ STL库提供的一种排序函数,可以快速方便地对数组或容器进行排序。本文将详细介绍sort函数的用法,包括排序方式、自定义比较函数和对容器的排序等内容。

基本用法

sort函数的声明如下:

template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);

其中,RandomAccessIterator表示可以访问任意位置的迭代器类型,例如指针。first和last分别表示排序区间的起始地址和终止地址。

sort函数默认是按升序排序的,如果想要按照降序排序,需要使用比较函数来指定排序方式。

降序排序

方式一

sort函数的比较函数默认是升序排序的。如果想要按照降序排序,可以将比较函数改为返回第一个参数大于第二个参数的情况。

示例代码如下:

#include <algorithm>
#include <iostream>
using namespace std;

bool compare(int a, int b)
{
    return a > b;
}

int main()
{
    int arr[] = {4, 2, 5, 1, 3};
    int n = sizeof(arr) / sizeof(int);
    sort(arr, arr + n, compare);
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:

5 4 3 2 1

方式二

另外,C++11引入了一个新的函数对象std::greater,可以方便地实现降序排序。

示例代码如下:

#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;

int main()
{
    int arr[] = {4, 2, 5, 1, 3};
    int n = sizeof(arr) / sizeof(int);
    sort(arr, arr + n, greater<int>());
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:

5 4 3 2 1

升序排序

升序排序是sort函数的默认排序方式,无需指定比较函数。

示例代码如下:

#include <algorithm>
#include <iostream>
using namespace std;

int main()
{
    int arr[] = {4, 2, 5, 1, 3};
    int n = sizeof(arr) / sizeof(int);
    sort(arr, arr + n);
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:

1 2 3 4 5

对容器排序

除了对数组进行排序外,sort函数还可以对STL容器进行排序,如vector和list等。

示例代码如下:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> vec = {4, 2, 5, 1, 3};
    sort(vec.begin(), vec.end());
    for (auto i : vec)
    {
        cout << i << " ";
    }
    return 0;
}

输出结果为:

1 2 3 4 5

自定义比较函数

sort函数默认是按升序排序的,如果想要按照降序排序,需要使用比较函数来指定排序方式。有时我们需要按照某种特定的方式排序,比如对字符串按照长度进行排序,这就需要自定义比较函数来实现。

示例代码如下:

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

bool compare(string a, string b)
{
    return a.size() < b.size();
}

int main()
{
    vector<string> vec = {"apple", "banana", "pear", "orange"};
    sort(vec.begin(), vec.end(), compare);
    for (auto i : vec)
    {
        cout << i << " ";
    }
    return 0;
}

输出结果为:

pear apple banana orange

总结

本文对C++ STL库中sort函数进行了详细的介绍,包括排序方式、自定义比较函数和对容器的排序等内容。使用sort函数可以极大地简化排序过程,提高代码的效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ sort排序之降序、升序使用总结 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JavaScript算法学习之冒泡排序和选择排序

    JavaScript算法学习之冒泡排序和选择排序 冒泡排序和选择排序是常见的两种排序算法。在本文中,我们将详细讲解这两种排序算法,并提供代码示例供读者参考。 冒泡排序 冒泡排序是一种简单的排序算法,它通过比较相邻两个元素的大小,依次将最大的元素冒泡到数组的末尾。 以下是冒泡排序的代码示例: function bubbleSort(array) { const…

    算法与数据结构 2023年5月19日
    00
  • Javascript中的常见排序算法

    Javascript中的常见排序算法 在Javascript中,排序算法是非常基础和常见的算法之一,也是大多数编程语言都会涉及到的一部分。在实际应用场景中,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 冒泡排序 冒泡排序是一种简单易懂的排序算法,其中每一趟都按照从前往后的顺序比较两个相邻的元素,如果前一个元素大于后一个元素,则交换这…

    算法与数据结构 2023年5月19日
    00
  • 手把手教你搞懂冒泡排序和选择排序

    手把手教你搞懂冒泡排序和选择排序 冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换的数据为止。 算法流程 比较相邻的元素。如果当前的元素大于下一个元素,则交换它们的位置。 对每一对相邻元素都执行步骤 1,从开始第一对到…

    算法与数据结构 2023年5月19日
    00
  • C++实现选择性排序(SelectionSort)

    C++实现选择性排序(SelectionSort) 选择性排序(Selection Sort)是计算机科学中一种简单直观的排序算法。它的工作原理是:首先在未排序的数列中找到最小(大)的元素,然后将其存放到数列的起始位置,接着再从剩余的未排序元素中继续寻找最小(大)的元素,然后放到已排序序列的末尾。以此类推,直到所有元素均被排序完毕。 具体的实现步骤如下: 在…

    算法与数据结构 2023年5月19日
    00
  • PHP中数组的三种排序方法分享

    当我们处理大量数据时,数组是非常有用的数据结构。排序是数组常见的操作之一,PHP中提供了三种常用的排序方法,分别是冒泡排序、快速排序和插入排序。接下来,本文将详细介绍这三种方法的实现过程和使用方法。 冒泡排序 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数组,每次比较相邻两个元素,如果顺序不对就交换它们。这样一趟遍历后,就能把最大(或最小)的元素移到最…

    算法与数据结构 2023年5月19日
    00
  • C++STL函数和排序算法的快排以及归并排序详解

    C++ STL函数和排序算法的快排以及归并排序详解 1. 什么是STL? STL(Standard Template Library)是C++标准库中的一部分,它是由若干个模板类和函数构成的集合,提供了一些常用的数据结构和算法。 其中,数据结构包括vector(可变长数组)、list(双向链表)等,算法包括sort(排序)、find(查找)等。 2. STL…

    算法与数据结构 2023年5月19日
    00
  • stl常用算法(Algorithms)介绍(stl排序算法、非变序型队列)

    STL常用算法介绍 STL(Standard Template Library)是C++标准库的一个庞大组成部分,提供了大量的常用算法,容器以及迭代器等等。这些工具都可以被拿来用来解决大部分的计算问题。其中stl常用算法主要包括排序算法和非变序型队列,下面进行详细讲解。 stl排序算法 STL提供了丰富的排序算法模板,可以直接拿来使用,无需重新实现。以下是一…

    算法与数据结构 2023年5月19日
    00
  • JS中的算法与数据结构之字典(Dictionary)实例详解

    下面我将详细讲解“JS中的算法与数据结构之字典(Dictionary)实例详解”的完整攻略。 什么是字典? 字典是一种存储唯一键和对应值的数据结构,每个键对应一个值。JavaScript 中的对象就是字典的一种实现,通过键值对来存储和访问数据。 字典的操作 字典支持以下几种操作: 添加键值对 删除键值对 查找键值对 获取所有键 获取所有值 字典的实现 下面是…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部