C語(yǔ)言中qsort函數(shù)的用法實(shí)例詳解
C語(yǔ)言中qsort函數(shù)的用法實(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ì)本站的支持!
- C語(yǔ)言中回調(diào)函數(shù)和qsort函數(shù)的用法詳解
- C語(yǔ)言?使用qsort函數(shù)來(lái)進(jìn)行快速排序
- C語(yǔ)言庫(kù)函數(shù)中qsort()的用法
- C語(yǔ)言中關(guān)于庫(kù)函數(shù) qsort 快排的用法
- C語(yǔ)言中關(guān)于庫(kù)函數(shù) qsort 的模擬實(shí)現(xiàn)過(guò)程
- 關(guān)于C語(yǔ)言qsort函數(shù)詳解
- C語(yǔ)言之qsort函數(shù)詳解
- C語(yǔ)言庫(kù)函數(shù)qsort的使用及模擬實(shí)現(xiàn)
相關(guān)文章
c++讀取數(shù)據(jù)文件到數(shù)組的實(shí)例
今天小編就為大家分享一篇c++讀取數(shù)據(jù)文件到數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07詳解C語(yǔ)言中的內(nèi)存四區(qū)模型及結(jié)構(gòu)體對(duì)內(nèi)存的使用
這篇文章主要介紹了C語(yǔ)言中的內(nèi)存四區(qū)模型及結(jié)構(gòu)體對(duì)內(nèi)存的使用,包括結(jié)構(gòu)體中內(nèi)存泄漏情況的注意點(diǎn)提醒,需要的朋友可以參考下2016-03-03Qt實(shí)現(xiàn)手動(dòng)切換多種布局的完美方案
通過(guò)點(diǎn)擊程序界面上不同的布局按鈕,使主工作區(qū)呈現(xiàn)出不同的頁(yè)面布局,多個(gè)布局之間可以通過(guò)點(diǎn)擊不同布局按鈕切換,支持的最多的窗口為9個(gè),不同布局下窗口數(shù)隨之變化,這篇文章主要介紹了Qt實(shí)現(xiàn)手動(dòng)切換多種布局的完美方案,需要的朋友可以參考下2024-07-07C++實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05C語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲(單人版)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲單人版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06C++ 二維數(shù)組參數(shù)傳遞的實(shí)現(xiàn)方法
這篇文章主要介紹了C++ 二維數(shù)組參數(shù)傳遞的實(shí)現(xiàn)方法的相關(guān)資料,這里提供三種方法幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-08-08