C語(yǔ)言中qsort函數(shù)的用法實(shí)例詳解
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的蓬安網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
快速排序是一種用的最多的排序算法,在C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)中也有快速排序的函數(shù),下面說(shuō)一下詳細(xì)用法。
qsort函數(shù)包含在<stdlib.h>中
qsort函數(shù)聲明如下:
void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *));
參數(shù)說(shuō)明:
base,要排序的數(shù)組
nmemb,數(shù)組中元素的數(shù)目
size,每個(gè)數(shù)組元素占用的內(nèi)存空間,可使用sizeof函數(shù)獲得
compar,指向函數(shù)的指針也即函數(shù)指針。這個(gè)函數(shù)用來(lái)比較兩個(gè)數(shù)組元素,第一個(gè)參數(shù)大于,等于,小于第二個(gè)參數(shù)時(shí),分別顯示正值,零,負(fù)值。
下面看幾個(gè)例子:
#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);//對(duì)于函數(shù)指針(指向函數(shù)的指針),直接傳入函數(shù)名和函數(shù)名進(jìn)行& //運(yùn)算都是可以的,因?yàn)樵谡{(diào)用函數(shù)時(shí)也是取的函數(shù)的地址 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]); }
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
分享名稱(chēng):C語(yǔ)言中qsort函數(shù)的用法實(shí)例詳解
網(wǎng)頁(yè)地址:http://chinadenli.net/article16/jgijgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、、搜索引擎優(yōu)化、微信公眾號(hào)、網(wǎng)站收錄、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)