STL Library
好用的東西,總是要最後講
sort( 陣列名, 陣列名 + 陣列長度 );
補充: 引用下面這個檔案同等於一次引用大部分的功能,不用一個個引用
#include <bits/stdc++.h>
如果上面的函式庫無法include時,這是因為編譯器不同的關係。可以include以下的函式庫
#include <algorithm>
我要把一個陣列排序,該怎麼做呢
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int studentHeights[N];
int main(){
for ( int i = 0 ; i < N ; i++ )
studentHeights[i] = rand();
cout << "排序前的同學身高為 : ";
for ( int i = 0 ; i < N ; i++ )
cout << studentHeights[i] << " ";
cout << endl;
sort( studentHeights, studentHeights+N );
cout << "排序後的同學身高為 : ";
for ( int i = 0 ; i < N ; i++ )
cout << studentHeights[i] << " ";
cout << endl;
return 0;
}
反過來,由大到小呢?
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int studentHeights[N];
bool cmp( int a , int b ){
return a > b;
}
int main(){
for ( int i = 0 ; i < N ; i++ )
studentHeights[i] = rand();
cout << "排序前的同學身高為 : ";
for ( int i = 0 ; i < N ; i++ )
cout << studentHeights[i] << " ";
cout << endl;
sort( studentHeights, studentHeights+N , cmp );
cout << "排序後的同學身高為 : ";
for ( int i = 0 ; i < N ; i++ )
cout << studentHeights[i] << " ";
cout << endl;
return 0;
}
### 什麼是Cmp
sort 函式的運作原理是,它會一一取出原陣列的元素,兩兩一組,左方 為 a、右方為 b。接著呼叫比較函式。這個「比較函式(cmp)」,應 去比較 a 與 b 的內容,若 a 應該排在左邊,則傳回 true, 如果 b 應被排在左邊,則傳回 false,而若兩者的次序前後無所謂的話,則傳回 0。