c 中的sort 函式

2021-05-22 02:03:31 字數 2208 閱讀 9230

起來自己天天排序排序,冒泡啊,二分查詢啊,結果在stl中就自帶了排序函式sort,qsort,總算把自己解脫了~

所以自己總結了一下,首先看sort函式見下表:

函式名  功能描述 

sort  對給定區間所有元素進行排序 

stable_sort  對給定區間所有元素進行穩定排序 

partial_sort  對給定區間所有元素部分排序 

partial_sort_copy  對給定區間複製並排序 

nth_element  找出給定區間的某個位置對應的元素 

is_sorted  判斷乙個區間是否已經排好序 

partition  使得符合某個條件的元素放在前面 

stable_partition  相對穩定的使得符合某個條件的元素放在前面 

要使用此函式只需用#include sort即可使用,語法描述為:

sort(begin,end),表示乙個範圍,例如:

int _tmain(int argc, _tchar* argv)

,i;for(i=0;i<20;i++)

cout《輸出結果將是把陣列a按公升序排序,說到這裡可能就有人會問怎麼樣用它降序排列呢?這就是下乙個討論的內容.

一種是自己編寫乙個比較函式來實現,接著呼叫三個引數的sort:sort(begin,end,compare)就成了。對於list容器,這個方法也適用,把compare作為sort的引數就可以了,即:sort(compare).

1)自己編寫compare函式:

bool compare(int a,int b)

int _tmain(int argc, _tchar* argv)

,i;for(i=0;i<20;i++)

cout<2)更進一步,讓這種操作更加能適應變化。也就是說,能給比較函式乙個引數,用來指示是按公升序還是按降序排,這回輪到函式物件出場了。

為了描述方便,我先定義乙個列舉型別enumcomp用來表示公升序和降序。很簡單:

enum enumcomp;

然後開始用乙個類來描述這個函式物件。它會根據它的引數來決定是採用「<」還是「>」。

class compare ;

bool operator () (int num1,int num2)

} };接下來使用 sort(begin,end,compare(asc)實現公升序,sort(begin,end,compare(desc)實現降序。

主函式為:

int main()

,i;for(i=0;i<20;i++)

cout<3)其實對於這麼簡單的任務(型別支援「<」、「>」等比較運算子),完全沒必要自己寫乙個類出來。標準庫里已經有現成的了,就在functional裡,include進來就行了。functional提供了一堆基於模板的比較函式物件。它們是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。對於這個問題來說,greater和less就足夠了,直接拿過來用:

公升序:sort(begin,end,less());

降序:sort(begin,end,greater()).

int _tmain(int argc, _tchar* argv)

,i;for(i=0;i<20;i++)

cout<());

for(i=0;i<20;i++)

cout<4)既然有迭代器,如果是string 就可以使用反向迭代器來完成逆序排列,程式如下:

int main()

int main()

,i;for(i=0;i<20;i++)

cout《相關:

1)why你必須給予元素個數?

因為陣列不知道它自己有多少個元素

2)why你必須給予大小?

因為 qsort 不知道它要排序的單位.

3)why你必須寫那個醜陋的、用來比較倆數值的函式?

因為 qsort 需要乙個指標指向某個函式,因為它不知道它所要排序的元素型別.

4)why qsort 所使用的比較函式接受的是 const void* 引數而不是 char* 引數?

因為 qsort 可以對非字串的數值排序.

當然對於排序函式還有

其他的用法,今天就只說這些,我也正在

學習中,上述只是發表了一點自己的拙見,最後宣告上訴例項是基於vc++2008。

C 中的sort函式

一 為什麼要用c 標準庫里的排序函式 sort 函式是 c 一種排序方法之一,學會了這種方法也打消我學習 c 以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n log2 n 執行效率較高!二 c 標準庫里的排序函式的使用方法 i sort...

c 中的sort 函式

起來自己天天排序排序,冒泡啊,二分查詢啊,結果在stl中就自帶了排序函式sort,qsort,總算把自己解脫了 所以自己總結了一下,首先看sort函式見下表 函式名 功能描述 sort 對給定區間所有元素進行排序 stable sort 對給定區間所有元素進行穩定排序 partial sort 對給...

C 中的sort函式

標頭檔案 include using namespace std 1.如果sort函式只帶兩個引數,如 int arr 5 sort arr,arr 5 則表示將陣列arr中的數按公升序排列。其中第乙個引數是要排序的陣列的首位址,第二個引數是陣列的尾位址的下一位址。2.如果sort函式中的第三個引數...