包含標頭檔案為stdlib.h
void qsort(void*base, size_t num, size_t width, int( * compare)(const void*,const void*))
各引數:
待排序陣列首位址
陣列中待排序元素數量
各元素的占用空間大小
指向函式的指標,用於確定排序的順序,記住傳入的是位址!!!
compare( (void *) & elem1, (void *) & elem2)
compare函式的返回值
描述<0
elem1將被排在elem2之前
=0位置不變
>0
elem1將被排在elem2之後
公升序還是降序取決於返回值的正負
// 由小到大排序
intcomp
(const
void
*a,const
void
*b)// 由大到小排序
intcomp
(const
void
*a,const
void
*b)
對一維陣列的排序例項(從小到大排序):
#include
#include
intcomp
(const
void
*a,const
void
*b)int
main()
qsort
(array, n,
sizeof
(int
),comp)
;for
(i=0
;i)return0;
}
對乙個二維陣列進行排序 :
int a[1000][2];
其中按照a[0]
的大小進行乙個整體的排序,其中a[1]
必須和a[0]
一起移動交換。//即第一行和第二行(a[0]
和a[1]
分別代表第一行和第二行的首位址)。使用庫函式排序的**量並不比用氣泡排序法小,但速度卻快很多。
qsort
(a,1000
,sizeof
(int)*
2, comp)
;int
comp
(const
void
*a,const
void
*b)
對字串進行排序 :
int
comp
(const
void
*p1,
const
void
*p2)
intmain()
按結構體中某個關鍵字排序(對結構體一級排序):
struct node s[
100]
;int
comp
(const
void
*p1,
const
void
*p2)
qsort
(s,100
,sizeof
(s[0])
,comp)
;
按結構體中多個關鍵字排序(對結構體多級排序)[以二級為例] :
struct node s[
100]
;//按照x從小到大排序,當x相等時按y從大到小排序
intcomp
(const
void
*p1,
const
void
*p2)
對結構體中字串進行排序 :
struct node s[
100]
;//按照結構體中字串str的字典序排序
intcomp
(const
void
*p1,
const
void
*p2)
qsort
(s,100
,sizeof
(s[0])
, comp)
;
計算幾何中求凸包的comp :
int
comp
(const
void
*p1,
const
void
*p2)
C語言 qsort函式
c程式使用標準庫函式qsort排序整數檔案 include include include include define max 10 int int cmp const void a,const void b int main while feof fp length fclose fp qsor...
C語言qsort用法
一 對int型別陣列排序 int num 100 sample int cmp const void a const void b qsort num,100,sizeof num 0 cmp 二 對char型別陣列排序 同int型別 char word 100 sample int cmp con...
qsort簡單解析
編譯器函式庫自帶的快速排序函式。使用qsort 排序並用 bsearch 搜尋是乙個比較常用的組合,使用方便快捷。qsort 的函式原型是 void qsort void base,size t num,size t width,int cdecl compare const void const ...