qsort函式包含在的標頭檔案裡。
qsort函式宣告如下:
void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));
引數說明如下:
base: 要排序的陣列起始位置
nmemb: 要排序的元素數目
size: 每個陣列元素占用記憶體空間,可使用sizeof獲得
compar: 比較兩個陣列元素的比較函式。本比較函式的第乙個引數值小於、等於、大於第二引數值時,本比較函式的返回值應分別小於、等於、大於零。
也就說你要實現乙個這樣的函式(公升序):
int cmp(const void *a, const void *b)
如果a > b,返回》0
如果a == b, 返回0
如果a < b,返回<0
這裡的a和b的關係僅僅是邏輯上的,並不是值比較,所以排序的可以不僅僅是數字,還可以是字元。
《以下排序都是採用的從小到大排序》
一、對int型別陣列排序
int num[100];int cmp ( const
void *a , const
void *b)
qsort(num,
100,sizeof(num[0]),cmp);
對乙個二維陣列的進行排序:
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)
二、對char型別陣列排序(同int型別)
char word[100];int cmp( const
void *a , const
void *b)
qsort(word,
100,sizeof(word[0]),cmp);
三、對double型別陣列排序(特別要注意)
doublein[100
];int cmp( const
void *a , const
void *b)
qsort(
in,100,sizeof(in[0]),cmp);
四、對結構體一級排序
structins[
100]
//按照data的值從小到大將結構體排序,關於結構體內的排序關鍵資料data的型別可以很多種,參考上面的例子寫
int cmp( const
void *a ,const
void *b)
qsort(s,
100,sizeof(s[0]),cmp);
五、對結構體二級排序
structins[
100];
//按照x從小到大排序,當x相等時按照y從大到小排序
int cmp( const
void *a , const
void *b)
qsort(s,
100,sizeof(s[0]),cmp);
六、對字串進行排序
structins[
100];
//按照結構體中字串str的字典順序排序
int cmp ( const
void *a , const
void *b)
qsort(s,
100,sizeof(s[0]),cmp);
七、計算幾何中求凸包的cmp
int cmp(constvoid *a,const
void *b) //
重點cmp函式,把除了1點外的所有點,旋轉角度排序
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...
C語言qsort的用法
關於快排函式的一些說明 qsort,包含在stdlib.h標頭檔案裡,函式一共四個引數,沒返回值.乙個典型的qsort的寫法如下 qsort s,n,sizeof s 0 cmp 其中第乙個引數是參與排序的陣列名 或者也可以理解成開始排序的位址,因為可以寫 s i 這樣的表示式,這個問題下面有說明 ...
C語言 qsort()的用法。
使用qsort 函式,必須要引用 include qsort void base,int sz,int width,int cmp void e1,void e2 base為要排列物件的起始位址 sz為要排列物件的總數 width為每個資料元素的寬度 位元組數 cmp為排列的函式指標,指向函式形參 ...