【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

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