C 中標準庫函式 qsort 的用法

2021-06-20 09:24:08 字數 1376 閱讀 2546

一、《c語言函式庫》對qsort的說明(p110)

qsort:快速排序函式

函式原型:void qsort(void *base, int nelem, int width, int(*fcmp)(const void *, const *))

標頭檔案  :#include

是否是標準函式:是

函式功能:對記錄 進行從小到大的快速排序。引數base指向存放待排序列的陣列的首位址,nelem為陣列中元素的個數,width為每個元素的位元組數,int(*fcmp)(const void *, const *)為由使用者提供的比較函式。

返回值:無

二、簡單例子

/* c中qsort函式的使用 */

#include#includeint cmp(const void * a ,const void * b)

int main()

; int i;

printf("\nthe array that is before sort \n");

for(i=0;i<10;i++)

qsort(sort,10,sizeof(int),cmp);//特別注意2 printf("\nthe array that is after sort\n");

for(i=0;i<10;i++)

printf("\n");

return 0;

}

三、特別注意

1.qsort第四個引數,即上例中的函式cmp,返回值必須是int,兩個引數的型別必須都是const void *型別,因此在寫比較複雜的比較函式時,可提前先進行強制型別轉換,轉換成相應的型別;

2.對於書中提供的例子編譯通不過,也有另一種解決方法,即在呼叫時直接進行強制型別轉換,即將上述兩處分別更改為

int cmp(int * a ,int  * b)

int main()

; int i;

qsort(list,5,sizeof(list[0]), cmp);//特別注意2

for(i=0;i<5;i++)

return 0;

}2.結構體的比較

見此外補充,結構體的用法:

struct是結構體的關鍵字,用來宣告結構體變數如

struct  student

;struct student  stu[10]來宣告乙個結構體陣列

typedef是用來定義新的型別名來代替已有的型別名,

可將上面的結構體定義為

typedef struct  student

student;

也就是說,將原來的struct student 重新定義為 stud;

可以直接用  student stu[10]來宣告乙個結構體陣列

標準庫函式qsort排序

qsort函式包含在的標頭檔案裡。qsort函式宣告如下 void qsort void base,size t nmemb,size t size,int compar const void const void 引數說明如下 base 要排序的陣列 nmemb 陣列中的元素數目 size 每個陣...

C語言標準庫函式qsort詳解

功 能 使用快速排序例程進行排序 標頭檔案 stdlib.h 用 法 void qsort void base,int nelem,int width,int fcmp const void const void 引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指...

C語言標準庫函式qsort排序的介紹與使用

qsort函式包含在的標頭檔案裡。qsort函式宣告如下 void qsort void base,size t nmemb,size t size,int compar const void const void 引數說明如下 base 要排序的陣列 nmemb 陣列中的元素數目 size 每個陣...