1.該函數(shù)屬于#include <stdlib.h>標(biāo)準(zhǔn)庫中疯趟, 且是快速排序科吭;
2.qsort函數(shù)聲明:void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))带膀;
3.*base:指向要排序數(shù)組的第一個元素指針,而數(shù)組名則是該數(shù)組的起始地址;size_t nitems:指數(shù)組中元素個數(shù)怀伦;size_t size:指數(shù)組中單個元素的大小凡恍;cmp:指用來比較兩個元素的函數(shù)(一般根據(jù)需求自己重寫)志秃;
4.實例:1.定義一結(jié)構(gòu)體:
? ??????????????struct Interval{
? ? ? ? ? ? ? ? ? ? int x, y;
? ? ? ? ? ? ? ? ? }I[110];
? ? ? ? ? ? ? ? 2.重寫qsort函數(shù)
? ??????????????????int cmp(const void *a, const void *b){
? ? ????????????????????????if(((const struct Interval *)a)->x != ((const struct Interval *)b)->x)
? ? ? ????????????????????????????? return ((const struct Interval *)b)->x > ((const struct Interval *)a)->x; //先按左端點從大到小排列
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?else return ((const struct Interval *)a)->y < ((const struct Interval *)b)->y; //然后按左端點相同的右端點從小到大排序
}
? ? ? ? ? ? ? ? ? ? ? ? 1.((const struct Interval *)b)是指針類型? ? 2.return的值與需求相反(具體可看上文)
? ? ? ? ? ? ? ? ? ?3.main函數(shù)里調(diào)用:
? ??????????????????qsort(I, n, sizeof(struct Interval), cmp); (結(jié)構(gòu)體的單個元素大小與其他標(biāo)準(zhǔn)類型不同)。