參考文件:
from:
最近演算法作業經常需要排序。偶是乙個很懶的人,於是一直用c++的sort進行排序~~~不少同志對此心存疑慮,所以今天就寫一寫sort的用法。
宣告:此用法是從某大牛的程式中看到的,其實偶只是拿來用,不知所以然,飄走~~~~~
msdn中的定義:
template
voidsort(ranit first, ranit last); //--> 1)
template
voidsort(ranit first, ranit last, pred pr); //--> 2)
標頭檔案:
#include
using namespace std;
1.預設的sort函式是按公升序排。對應於1)
sort(a,a+n); //兩個引數分別為待排序陣列的首位址和尾位址
2.可以自己寫乙個cmp函式,按特定意圖進行排序。對應於2)
例如:int cmp( const int &a, const int &b )
sort(a,a+n,cmp);
是對陣列a降序排序
又如:int cmp( const point &a, const point &b )
else
return 0;
}sort(a,a+n,cmp); //
是先按x公升序排序,若x值相等則按y公升序排
這裡可以簡寫為:
int cmp(point a, point b)
if (a.x != b.x)
return a.x < b.x;
else
return a.y < b.y;
如果a.x與b.x不等,則按x的公升序排列,否則按y的公升序排列,主要用在將乙個平面內點的座標進行有規則的排序。
sort(points,points+n,cmp);//引數除了可以是一般的陣列外,也可以是結構體陣列,前面是傳入的引數,後面是將前面陣列裡面的資料按照某種規則進行排序。預設是公升序。但這裡是結構體,所以必須寫明規則。不然誰知道呢。其標頭檔案:
與此類似的還有c中的qsort,以下同附上qsort的使用方法:
#include
格式 qsort(array_name,data_number,sizeof(data_type),compare_function_name) (void*)bsearch (pointer_to_key_word,array_name,find_number,
sizeof(data_type),compare_function_name)
e.g.
int cmp(const void*a,const void *b)
int*pa=(int*)a,*pb=(int*)b;
if(*pa>*pb) return 1;
else if (*pa==*pb) return 0;
else return -1;
qsort(data,n,sizeof(int),cmp); // 對int型陣列進行快速排序(非降序排列)
p=(int*)bsearch(&a,data,n,sizeof(int),cmp);
C sort 函式用法
msdn中的定義 template voidsort ranit first,ranit last 1 template voidsort ranit first,ranit last,pred pr 2 標頭檔案 include using namespace std 1.預設的sort函式是按公...
C sort 函式用法
msdn中的定義 template voidsort ranit first,ranit last 1 template voidsort ranit first,ranit last,pred pr 2 標頭檔案 include using namespace std 1.預設的sort函式是按公...
C sort函式用法
from 最近演算法作業經常需要排序。偶是乙個很懶的人,於是一直用c 的sort進行排序 不少同志對此心存疑慮,所以今天就寫一寫sort的用法。宣告 此用法是從某大牛的程式中看到的,其實偶只是拿來用,不知所以然,飄走 msdn中的定義 template voidsort ranit first,ra...