您好,登錄后才能下訂單哦!
C語言中qsort函數的用法實例詳解
快速排序是一種用的最多的排序算法,在C語言的標準庫中也有快速排序的函數,下面說一下詳細用法。
qsort函數包含在<stdlib.h>中
qsort函數聲明如下:
void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *));
參數說明:
base,要排序的數組
nmemb,數組中元素的數目
size,每個數組元素占用的內存空間,可使用sizeof函數獲得
compar,指向函數的指針也即函數指針。這個函數用來比較兩個數組元素,第一個參數大于,等于,小于第二個參數時,分別顯示正值,零,負值。
下面看幾個例子:
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> void main(void) { int i; int a[10]={0,1,2,3,4,5,6,7,8,9}; char b[10]={'a','b','c','d','e','f','g','h','i','j'}; double c[10]={0.1,0.2,0.9,0.5,0.3,0.6,0.7,0.8,1.1,1.2}; int cmp1(const void * a,const void * b) { return (*(int*)a-*(int*)b);//a>b 返回正值 } int cmp2(const void * a,const void *b) { return(*(char*)a-*(char*)b); } int cmp3(const void * a,const void * b) { if(fabs(*(double*)a-*(double *)b)<1*exp(-20)) return 0; else return(((*(double*)a-*(double*)b)>0)?1:-1); } qsort(a,10,sizeof(int),&cmp1);//對于函數指針(指向函數的指針),直接傳入函數名和函數名進行& //運算都是可以的,因為在調用函數時也是取的函數的地址 qsort(b,10,sizeof(char),cmp2); qsort(c,10,sizeof(double),cmp3); for(i=0;i<10;i++) printf("%d ",a[i]); for(i=0;i<10;i++) printf("%c ",b[i]); for(i=0;i<10;i++) printf("%lf ",c[i]); }
如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。