void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
標頭檔案:stdlib.h
舉例:char a[1000];
int m=strlen(a);
qsort(a,m,sizeof(a[0]),cmp);
qsort中的cmp函式感覺是使用者自定義的,根據其不同的資料型別
接下來介紹不同資料型別所定義的cmp函式
1.int a[1000];int 陣列
qsort(a,1000,sizeof(int),comp);
其中comp函式應寫為:
int cmp(const void *a,const void *b)
compare 函式的返回值
描述< 0
elem1將被排在elem2前面
0elem1 等於 elem2
> 0
elem1 將被排在elem2後面
註明:*(int*)a就是取a指向的內容的意思。
上面是由小到大排序,return *(int *)b - *(int *)a; 為由大到小排序。
2.char a[20]; 字元陣列
qsort(a,20,sizeof(a[0]),cmp);
int find(char b,char a)int cmp(const void *a,const void *b)
3.int a[1000][2];二維陣列
qsort(a,1000,sizeof(int)*2,cmp);int comp(const void*a,const void*b)
4.對字串進行排序
int comp(const void*p1,const void*p2)int main()
s[100];
int comp(constvoid*p1,constvoid*p2)
qsort(s,100,sizeof(s[0]),comp);
6.按結構體中多個關鍵字排序(對結構體多級排序)[以二級為例]:
struct nodes[100];
//按照x從小到大排序,當x相等時按y從大到小排序
int comp(const void*p1,const void*p2)
7.對結構體中字串進行排序:
struct nodes[100];
//按照結構體中字串str的字典序排序
int comp(const void*p1,const void*p2)
qsort(s,100,sizeof(s[0]),comp);
C 排序函式中cmp 比較函式詳解
整型資料比較 bool cmp int a,int b int a 10 sort a,a 10,cmp 實型資料比較 bool cmp float a,float b int a 10 sort a,a 10,cmp 結構體型別比較 題目 有n個學生的資料,將學生資料按成績高低排序,如果成績相同則...
Java 快速排序,以及雙基快排
單基準快排 使用 quicksort arr,0,arr.length 1 排序整個陣列 private static void quicksort int arr,int left,int right return lt的左邊放小於基準值的值 gt的右邊放大於基準值的值 lt與gt其中乙個是基準值...
C 內建比較函式sort和cmp排序問題和注意點
刷題中排序常用,sort指出三個引數 起始位置 終止位置 cmp函式排序方法 其中值得注意的是,尾元素是最後乙個元素的下一位置 對於sort,vector也可以,使用begin和end指標即可,其他普通陣列直接是頭指標,頭指標 元素個數 重點在於cmp的問題,這裡經常混淆,只需要記住 希望元素按什麼...