std::sort() in C++ STL
int x[8]={1,3,5,2,4,6,9,0};
如果要將Arrary或Vector排序,除了使用各式排序法之外,其實有個內建的sort()函式可以直接使用。不過,在使用時記得要先引入 <algorithm>檔頭。
#include <algorithm>
一、將Arrary或Vector升幕排序
sort(x,x+8);
結果:
- 排序前: int x[8]={1, 3, 5, 2, 4, 6, 9, 0};
- 排序後: int x[8]={0, 1, 2, 3, 4, 5, 6, 9};
sort(x,x+4);
結果:
- 排序前: int x[8]={1, 3, 5, 2, 4, 6, 9, 0};
- 排序後: int x[8]={1, 2, 3, 5, 4, 6, 9, 0};
二、將Arrary或Vector降幕排序
sort(x,x+8, greater<int>( ) );
結果:
- 排序前: int x[8]={1, 3, 5, 2, 4, 6, 9, 0};
- 排序後: int x[8]={9, 6, 5, 4, 3, 2, 1, 0};
或是
bool cmp(int a, int b){ return a<b; }
sort(x,x+8, cmp );
結果:
- 排序前: int x[8]={1, 3, 5, 2, 4, 6, 9, 0};
- 排序後: int x[8]={9, 6, 5, 4, 3, 2, 1, 0};
或是
reverse(x,x+8 );
結果:
- 排序前: int x[8]={1, 3, 5, 2, 4, 6, 9, 0};
- 排序後: int x[8]={9, 6, 5, 4, 3, 2, 1, 0};
完整程式碼:
#include <iostream>
#include <algorithm>
using namespace std;
void print(const int list[], int size){
for(int i=0;i<size;i++){
cout << list[i] << " ";
}
}
bool cmp(int a,int b){
return a>b;
}
int main() {
int x[8]={1,3,5,2,4,6,9,0};
print(x,sizeof(x)/sizeof(int));
cout << endl << "After sorting..." << endl;
sort(x,x+8,cmp);
print(x,sizeof(x)/sizeof(int));
cout << endl << "Reverse ..." << endl;
reverse(x,x+8);
print(x,8);
}
沒有留言:
張貼留言