qsort
使用qsort()排序並用 bsearch()搜索是一個比較常用的組合,使用方便快捷。
qsort 的函數原型是void __cdecl qsort (void *base,size_tnum,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函數應寫為:
intcomp ( constvoid *a, constvoid *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 ); intcomp ( constvoid *a, constvoid *b ) { return( ( int* ) a ) [0] - ( ( int* ) b ) [0]; } 注意
使用庫函數排序的代碼量並不比用冒泡排序法小,但速度卻快很多。
|
最後更新:2017-04-03 15:22:09