1. 程式人生 > >C++ sort()函式一些簡單的用法

C++ sort()函式一些簡單的用法

C++標準函式模板庫(stl)裡有個自帶的排序函式sort(),該函式可以直接對陣列或者類似陣列型別的結構體進行排序,其時間複雜度為n*log2(n);sort()函式定義在標頭檔案<algorithm>中,基本用法為:sort(a,a+n);其中,a為一個數組的名稱,n為需要排序的陣列個數,陣列預設起始下標為0;
sort函式預設為升序排列,它缺省了一個引數,如果想讓它變為降序排列,需要自定義預設的那個引數。

bool cmp(int a, int b)
{
    return a > b;
}

這樣,呼叫函式sort(a,a+n,cmp),陣列a就會預設已降序的排列方式進行排序。
如果我們需要有多個比較條件,例如我們自定義了一個結構體:

struct code
{
    string name;
    int score;
};

我們希望,當code的分數score不同時,對code陣列按照降序方式排列;如果相同,則按照名字的升序排列。則需要自定義預設引數為:

bool cmp (code a, code b)
{
    if (a.score == b.score) return a.name < b.name;
    else return a.score > b.score;
}

呼叫函式sort(code,code+n,cmp)就可以按照我們那個要求進行排序了。