sort()函式是c++中的排序函式其標頭檔案為:#include
標頭檔案;
qsort()是c中的排序函式,其標頭檔案為:#include
1、sort()
sort 對給定區間所有元素進行排序
stable_sort 對給定區間所有元素進行穩定排序
partial_sort 對給定區間所有元素部分排序
partial_sort_copy 對給定區間複製並排序
nth_element 找出給定區間的某個位置對應的元素
is_sorted 判斷乙個區間是否已經排好序
partition 使得符合某個條件的元素放在前面
stable_partition 相對穩定的使得符合某個條件的元素放在前面
語法描述為:
(1)sort(begin,end),表示乙個範圍,例如:
#include "stdafx.h"
#include
#include
using namespacestd;
int
_tmain(intargc, _tchar* argv)
,i;for(i=
0;i<
10;i++)
cout<" ";
cout<sort(a,a+5);
for(i=
0;i<
10;i++)
cout<" ";
system(
"pause");
return 0;
}輸出結果將是把陣列a按公升序排序,說到這裡可能就有人會問怎麼樣用它降序排列呢?這就是下乙個討論的內容。
(2)sort(begin,end,compare)
一種是自己編寫乙個比較函式來實現,接著呼叫三個引數的sort:sort(begin,end,compare)就成了。
對於list容器,這個方法也適用,把compare作為sort的引數就可以了,即:sort(compare)。
1)自己編寫compare函式:
boolcompare(inta,intb)
int
_tmain(intargc, _tchar* argv)
,i;for(i=
0;i<
10;i++)
cout<" ";
cout<sort(a,a+
10,compare);
for(i=
0;i<
10;i++)
cout<" ";
system(
"pause");
return 0;
} 2)更進一步,讓這種操作更加能適應變化。也就是說,能給比較函式乙個引數,用來指示是按公升序還是按降序排,這回輪到函式物件出場了。
為了描述方便,我先定義乙個列舉型別enumcomp用來表示公升序和降序。很簡單:
enum enumcomp;
class compare;
booloperator() (intnum1,intnum2)
} };
int
main()
,i;for(i=
0;i<
10;i++)
cout<" ";
cout<sort(a,a+
20,compare(desc));
for(i=
0;i<
10;i++)
cout<" ";
return 0;
} 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()).
#include "stdafx.h"
#include
#include
#include
using namespacestd;
int
_tmain(intargc, _tchar* argv)
,i;for(i=
0;i<
10;i++)
cout<" ";
cout<sort(a,a+
10,greater<int>());
for(i=
0;i<
10;i++)
cout<" ";
system(
"pause");
return 0;
} int
main()
vec.push_back(a);
sort(vec.begin(),vec.end(),greater<int>());
while(icout<" ";
system(
"pause");
return 0;
} 4)既然有迭代器,如果是string 就可以使用反向迭代器來完成逆序排列,程式如下:
#include "stdafx.h"
#include
#include
#include
using namespacestd;
int
main()
c c 中庫函式sort的用法
要呼叫sort函式需包含標頭檔案,可以直接對陣列進行排序,時間複雜度為o nlogn 這個函式可以傳2個或3個引數,第乙個引數是待排序的首位址,第二個引數是區間尾位址的下一位址。也就是說,排序的區間為 a,b 對於a n 0.n 1 只需寫sort a,a n 即可實現對a 0 a n 1 的排序,...
c 中的sort 函式
起來自己天天排序排序,冒泡啊,二分查詢啊,結果在stl中就自帶了排序函式sort,qsort,總算把自己解脫了 所以自己總結了一下,首先看sort函式見下表 函式名 功能描述 sort 對給定區間所有元素進行排序 stable sort 對給定區間所有元素進行穩定排序 partial sort 對給...
C 中的sort函式
一 為什麼要用c 標準庫里的排序函式 sort 函式是 c 一種排序方法之一,學會了這種方法也打消我學習 c 以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n log2 n 執行效率較高!二 c 標準庫里的排序函式的使用方法 i sort...