想起來自己天天排序排序,冒泡啊,二分查詢啊,結果在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<
二維字元陣列排序
[cpp]view plain
copy
#include
#include
#include
using
namespace
std;
struct
data
str[100];
bool
cmp(
const
data &elem1,
const
data &elem2)
intmain()
sort(str, str+n, cmp);
for(i=0; i
cout<}
return
0;
}
**二:
[cpp]view plain
copy
bool
cmp(
const
char
*elem1,
const
char
*elem2)
intmain()
; int
n, i;
while
(cin>>n)
sort(pstr, pstr+n, cmp);
for(i=0; i
cout<}
return
0;
}
qsort()
[cpp]view plain
copy
#include
#include
using
namespace
std;
intcmp(
const
void
*a,const
void
*b)
struct
teltel[10];
intmain()
c 中sort 及qsort 的用法總結
當並演算法詳解請見點我 想起來自己天天排序排序,冒泡啊,二分查詢啊,結果在stl中就自帶了排序函式sort,qsort,總算把自己解脫了 所以自己總結了一下,首先看sort函式見下表 函式名 功能描述 sort 對給定區間所有元素進行排序 stable sort 對給定區間所有元素進行穩定排序 pa...
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 這個函式可以傳兩個引數或三個...