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。

results matching ""

    No results matching ""