閱讀718 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go URAL 1043 三角形外接圓
  下一篇:go 核心編程隨筆2