c 中sort 及qsort 的用法總結

2021-06-20 22:45:11 字數 1988 閱讀 6855

當並演算法詳解請見點我

想起來自己天天排序排序,冒泡啊,二分查詢啊,結果在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}int _tmain(int argc, _tchar* argv)

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

cout<」。

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<」等比較運算子),完全沒必要自己寫乙個類出來。標準庫里已經有現成的了,就在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< < = 時,分別返回正值 負值 零 (或者相反)。

使用a b 時要強制轉換型別,從void * 轉換回應有的型別後,進行操作。

陣列下標從零開始,個數為n, 下標0-(n-1)。

例項:int compare(const void *a,const void *b)

int main()

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

cout<

#include
#include using namespace std;  

struct data

str[100];

bool cmp(const data &elem1, const data &elem2)

int main()

sort(str, str+n, cmp);

for (i=0; i>n)

sort(pstr, pstr+n, cmp);

for (i=0; i#include using namespace std;

int cmp(const void *a,const void *b)

struct teltel[10];

int main()

c 中sort 及qsort 的用法總結

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

sort和qsort的用法

好吧,承認知識匱乏,一直都是手打快排的,才知道有這個函式 必須要科普一下。msdn中的定義 template voidsort ranit first,ranit last 1 template voidsort ranit first,ranit last,pred pr 2 標頭檔案 inclu...

C語言sort和qsort函式的用法

做acm題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的o n 2 排序,不但程式容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。stl裡面有個sort函式,可以直接對陣列排序,複雜度為n log2 n 使用這個函式,需要包含標頭檔案 include 這個函式可以傳兩個引數或三個...