一、《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 每個陣...