C++內建函式——sort 函式:實現陣列的排序功能
阿新 • • 發佈:2018-11-30
使用該函式,只需引用標頭檔案:
#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;
}