1、函數簡介
功 能: 使用快速排序例程進行排序
頭文件:stdlib.h
用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
參數: 1 待排序數組首地址
2 數組中待排序元素數量
3 各元素的占用空間大小
4 指向函數的指針,用於確定排序的順序
2、用法
使用qsort()排序並用 bsearch()搜索是一個比較常用的組合,使用方便快捷。
qsort 的函數原型是void __cdecl qsort (void *base,size_t num,size_t width,int (__cdecl *comp)(const void *,const void*))
其中base是排序的一個集合數組,num是這個數組元素的個數,width是一個元素的大小,comp是一個比較函數。
比如:對一個長為1000的數組進行排序時,int a[1000]; 那麼base應為a,num應為 1000,width應為 sizeof(int),comp函數隨自己的命名。
qsort(a,1000,sizeof(int),comp);
其中comp函數應寫為:
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
上面是由小到大排序,return *(int *)b-*(int *)a; 為由大到小排序。
是對一個二維數組的進行排序:
int a[1000][2]; 其中按照a[0]的大小進行一個整體的排序,其中a[1]必須和a[0]一起移動交換。
qsort(a,1000,sizeof(int)*2,comp);
int comp(const void *a,const void *b)
{
return ((int *)a)[0]-((int *)b)[0];
}