1. 程式人生 > >C++內建函式——sort 函式:實現陣列的排序功能

C++內建函式——sort 函式:實現陣列的排序功能

使用該函式,只需引用標頭檔案:

#include<algoritnm>

語法描述為: 

// 引數begin,end 表示一個範圍,分別為待排序陣列的首地址和尾地址

// 排列的陣列中包括左邊的 begin 但不包括右邊的 end

sort (begin,end)

// sort (a,a+10)將把陣列a按升序排序,因為sort函式預設為升序

將陣列按降序排列的方法一:

 自己編寫 compare 函式

// 兩個分別表示待排序陣列的首地址和尾地址,compare 表示比較的型別

sort (begin ,end ,compare)

程式碼實現 

#include<iostream>
// 使用sort函式的標頭檔案說明
#include<algorithm>
using namespace std;
// 自己編寫函式來實現升序排列
bool compare (int a,int b)
{
    // 升序排列,如果改為return a>b ,則為降序
    return a<b;
}
int main()
{
    int a[10] = {7,4,5,23,2,73,41,52,28,60},i;
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    sort(a,a+10,compare);
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    return 0;
}

將陣列按降序排列方法二:

利用 functional 標準庫

使用標頭檔案 #include<functional>即可使用標準庫

functional 提供瞭如下的基於模板的比較函式物件

  • equal_to<Type>: 等於
  • not_equal_to<Type>: 不等於
  • greater<Type>: 大於
  • greater_equal<Type>: 大於等於
  • less<Type>: 小於
  • less_equal<Type>: 小於等於 

對於這個問題來說,greater和less就足夠了,可以直接拿來用

  • 升序:sort(begin,end,less<data-type>())
  • 降序:sort(begin,end,greater<data-type>())

程式碼實現

#include<iostream>
// 呼叫sort函式的標頭檔案說明
#include<algorithm>
// 呼叫functional庫的標頭檔案說明
#include<functional>
using namespace std;
int main()
{
    int a[10] = {7,4,5,23,2,73,41,52,28,60},i;
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    // 降序
    sort(a,a+10,greater<int>());
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    return 0;
}