【C++】简单使用sort函数

经常在做一些算法题的时候,我们都会使用到排序算法,而对于排序除了简单的冒泡排序以外,其余几乎也只能看到模板理解学习,有时候写出来要么超时、要么就是答案有错,因此这里简单学习一下C++的soort函数,熟悉它的基本用法。

sort函数使用要点:

1.sort函数默认是升序,而需要降序或者其他排序要求则需要自己编写comp函数
2.需要引入标准库#include<algorithm>才可以使用sort函数
3.它有三个参数,第三个参数根据需要填写。
(1)第一个参数是要排序数组的初始地址;
(2)第二个参数是要排序数组的结束地址;
(3)第三个参数是要排序的方法(升序/降序)。
4.若需用使用less/greater函数则需要引入#include<functional>

代码演示如下:

#include<algorithm>
#include<iostream>
#include<string.h>
#include<functional>
using namespace std;

int comp(int a, int b) { return a > b; }  //此处是降序

int main() {
    int ary[10] = { 5,8,9,21,13,42,10,66,25 };

    cout << "初始序列如下:\n";
    for (int i = 0;i < 10;i++)
        cout << ary[i] << " ";

    sort(ary, ary + 10);  //sort函数默认排序为升序
    cout << "\n\n升序结果如下:\n";
    for (int i = 0;i < 10;i++)
        cout << ary[i] << " ";

    /*
        如果需要降序,则要自己重写一个comp函数
    */
    sort(ary, ary + 10,comp);  //sort函数默认排序为升序
    cout << "\n\n降序结果如下:\n";
    for (int i = 0;i < 10;i++)
        cout << ary[i] << " ";

    /*
        而如果不想要自己编写,也可以使用标准库自带的比较函数
        这是需要引入#include<functional>
        升序:sort(begin,end,less<data-type>());
        降序:sort(begin,end,greater<data-type>());
    */
    sort(ary, ary + 10, less<int>());
    cout << "\n\n使用标准库自带的比较函数(less<data-type>())升序结果如下:\n";
    for (int i = 0;i < 10;i++)
        cout << ary[i] << " ";

    sort(ary, ary + 10, greater<int>());
    cout << "\n\n使用标准库自带的比较函数(greater<data-type>())降序结果如下:\n";
    for (int i = 0;i < 10;i++)
        cout << ary[i] << " ";

    return 0;
}

代码结果如下:
初始序列如下:
5 8 9 21 13 42 10 66 25 0

升序结果如下:
0 5 8 9 10 13 21 25 42 66

降序结果如下:
66 42 25 21 13 10 9 8 5 0

使用标准库自带的比较函数(less())升序结果如下:
0 5 8 9 10 13 21 25 42 66

使用标准库自带的比较函数(greater())降序结果如下:
66 42 25 21 13 10 9 8 5 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章