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中数组随机排序的实现详解”的完整攻略。 概述 在JavaScript中,数组是一个非常有用的数据类型,而随机排序是在处理数组时非常实用的一种技术。本攻略将为你详细讲解如何实现JavaScript数组的随机排序。 方法一:使用sort()方法 JavaScript中的数组包含一个sort()方法,可以对数组中的元素进行排序。我…

    算法与数据结构 2023年5月19日
    00
  • java 排序算法之快速排序

    Java 排序算法之快速排序 快速排序(Quick Sort)是一种高效的排序算法,属于分治法(Divide and Conquer)策略,它的时间复杂度为 $O(nlogn)$,在大多数情况下可以达到线性级别的时间复杂度,是非常重要且常用的排序算法之一。 基本思想 快速排序算法的基本思路是:选择一个元素作为数组的 “基准”(pivot),将小于基准的元素放…

    算法与数据结构 2023年5月19日
    00
  • STl中的排序算法详细解析

    STl中的排序算法详细解析 概述 在STL中,sort是一种常用的排序算法。sort算法旨在将元素从小到大排序,但也可以使用cmp函数指定排序方式。 算法实现 sort算法基于“快速排序”算法的实现。其基本思想是从待排序列中选取一定的数值作为划分元素(pivot),通过一趟排序将所有比该元素小的数放到它的左边,所有比该元素大的数放到它的右边,然后再对左右两个…

    算法与数据结构 2023年5月19日
    00
  • Java桶排序之基数排序详解

    Java桶排序之基数排序详解 基本概念 基数排序(Radix Sort),又称桶排法(Bucket Sort),是一种非比较型整数排序算法。其思想是将一个数字序列拆分成多个数字进行比较排序,从个位开始,逐层进行排序,直到最高位排序完成。 实现步骤 初始化10个桶,代表数字0到9; 按照从低位到高位的顺序进行排序,首先比较个位,然后比较十位,以此类推,直到最高…

    算法与数据结构 2023年5月19日
    00
  • 2020年新浪最新PHP试题和答案解析

    2020年新浪最新PHP试题和答案解析攻略 作为新浪最新的PHP试题,本门考试难度较高。以下是一些考试攻略以及答案解析。 试题分析 本次试题由多道选择题和编程题组成,主要考察PHP语言基础、框架使用、数据库操作等方面的知识。 选择题 本次选择题共15道,主要考察PHP基础语法、函数使用、面向对象编程、异常处理等方面的知识。 编程题 本次编程题共2道,主要考察…

    算法与数据结构 2023年5月19日
    00
  • 排序算法之PHP版快速排序、冒泡排序

    排序算法之PHP版快速排序、冒泡排序 在算法和数据结构中,排序是一种重要的操作,主要目的是将一组无序的数据按照一定的规则进行排序。常见的排序算法有冒泡排序、快速排序、归并排序等。本文将详细介绍php版本的快速排序和冒泡排序的实现。 冒泡排序 冒泡排序是一种最简单的排序算法之一。其思想是从数组的第一个元素开始比较,将大的元素交换到后面,依次比较下去,直到排序完…

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

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

    算法与数据结构 2023年5月19日
    00
  • 详解Bucket Sort桶排序算法及C++代码实现示例

    接下来我会详细讲解“详解Bucket Sort桶排序算法及C++代码实现示例”的完整攻略。 什么是桶排序算法? 目前,排序算法很多,常用的有冒泡排序、选择排序、插入排序、快速排序、归并排序等等算法。其中,桶排序(Bucket Sort)是比较特殊的一种排序方法。顾名思义,桶排序就是把数据分到不同的桶里,然后对每个桶里的数据进行排序。支持桶排序的数据类型必须是…

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