C++排序-----sort函式
阿新 • • 發佈:2018-12-29
大一期末模擬題有一道輸入三個數字排序的題目,當時廢了好大功夫才寫出來,後來在百度查到有專門的排序函式,如sort。這樣以來就不用什麼交換法,排序法了。
排序關鍵字:sort(begin,end,xx)
begin: 要排序的陣列的起始地址;
end:要排序的陣列的結束地址;
xx:排序方法,可以不寫,預設為從小到大;
標頭檔案: algorithm
題目:輸入幾個數,把他們排序。
從小到大
傳統方法:
#include <iostream> using namespace std ; int main() { int a, b, c,t; cin >> a >> b >> c ; if ( a > b ) { t = a; a = b; b = t; } if( a > c ) { t = a; a = c; c = t; } if( b > c ) { t = b; b = c; c = t; } cout << a <<'\t'<< b << '\t' << c << endl;//從小到大排序; return 0 ; }
新方法:
#include <iostream> #include <algorithm> using namespace std; int main() { int a [10]; for(int i = 0; i < 10 ; i++) { cin >> a[i]; } sort(a,a+10);//注意這個地方; for(int i = 0; i < 10 ; i++) { cout << a[i] << '\t'; } return 0; }
從大到小
這時候需要對sort的第三個引數做文章,也即是將第三個填上complare
而且,還要定義一個函式!!!!!!
bool complare(int a, int b)
{
return a > b;
}
所以,從大到小的程式就是:
#include <iostream> #include <algorithm> using namespace std; bool complare(int a, int b) { return a > b; } int main() { int a [10]; for(int i = 0; i < 10 ; i++) { cin >> a[i]; } sort(a,a+10,complare); for(int i = 0; i < 10 ; i++) { cout << a[i] << '\t'; } return 0; }