版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1,C函數(shù)qsort的簡介和用法,BY:SMJUN,2,C函數(shù)qsort實(shí)現(xiàn)快速排序,排序方法有很多種:選擇排序,冒泡排序,歸并排序,快速排序等??疵侄贾揽焖倥判?是目前公認(rèn)的一種比較好的排序算法,比選擇排序,冒泡排序都要快。因?yàn)樗乃俣群芸欤韵到y(tǒng)也在庫里實(shí)現(xiàn)這個(gè)算法,便于我們的使用。這就是qsort,3,qsort簡介,qsort函數(shù)是ANSI C標(biāo)準(zhǔn)中提供的,其聲明在stdlib.h文件中,是根據(jù)二分發(fā)寫的,其時(shí)間復(fù)雜度為n*log(n),其結(jié)構(gòu)為: void qsort(void *base,size_t nelem,size_t width, cmp); *base 為要排序的
2、數(shù)組 nelem 為要排序的數(shù)組的長度 width 為數(shù)組元素的大小(一字節(jié)為單位) 簡單示例:對(duì)int num100排序,qsort中各參數(shù)怎么寫? qsort(num,100,sizeof(num0),cmp,4,自定義比較函數(shù),比較函數(shù)的名字是自定義的(這里我們用CMP命名); Cmp:qsort 要求提供的這個(gè)函數(shù)是一個(gè)需要自己定義的比較函數(shù),比較函數(shù)使得qsort通用性更好。有了比較函數(shù)qsort可以實(shí)現(xiàn)對(duì)數(shù)組,字符串,結(jié)構(gòu)體等結(jié)構(gòu)進(jìn)行升序或降序排序。 Int Cmp(const void *a , const void *b )中有兩個(gè)元素作為參數(shù),返回一個(gè)int值, 如果比較函數(shù)
3、返回大于0,qsort就認(rèn)為 ab , 如果比較函數(shù)返回等于0 qsort就認(rèn)為a 和b 這兩個(gè)元素相等,返回小于零 qsort就認(rèn)為 ab),你比較函數(shù)卻返回一個(gè) -1 (小于零的)那么qsort認(rèn)為ab 的,就把 b放到前面去,但實(shí)際上是a大于b的,所以就造成升降序的差別了。 簡單來說,比較函數(shù)的作用就是給qsort指明元素的大小是怎么比較的,5,簡單示例:對(duì)int num100中的元素從小到大排序。 int num100; int cmp ( const void *a , const void *b ) return *(int *)a - *(int *)b; /強(qiáng)制轉(zhuǎn)換類型 qso
4、rt(num,100,sizeof(num0),cmp); Cmp()定義了兩個(gè)const void(類型為空)的指針*a和*b; 在*(int *)a - *(int *)b; 這句中把指針強(qiáng)制轉(zhuǎn)換為 int型; 我們可以將const void 改為你需要排序?qū)ο蟮念愋停?int num100; int cmp ( int *a , int *b ) return *a - *b; qsort(num,100,sizeof(num0),cmp); 如果要對(duì)num100中的元素從大到小排序,只需要將return *a - *b改為 return *b -*a 就可以實(shí)現(xiàn),6,qsort簡單實(shí)例
5、,應(yīng)用qsort對(duì)int數(shù)組進(jìn)行排序: #include #include int cmp_1 ( int *a , int *b ) return *a - *b; int cmp_2 ( int *a , int *b ) return *b - *a; void main() int num10=1,3,5,7,9,2,4,6,8,0; int i; qsort(num,10,sizeof(num0),cmp_1);/從小到大 for(i=0;i10;i+) printf(%d ,numi); printf(n); qsort(num,10,sizeof(num0),cmp_2);/從大
6、到小 for(i=0;i10;i+) printf(%d ,numi); printf(n);,7,應(yīng)用qsort對(duì)char數(shù)組進(jìn)行排序: #include #include int cmp_1 ( char *a , char *b ) return *a - *b; int cmp_2 ( char *a , char *b ) return *b - *a; void main() char ch10=bcadfegihj; int i; qsort(ch,10,sizeof(ch0),cmp_1);/從小到大 for(i=0;i10;i+) printf(%c ,chi); print
7、f(n); qsort(ch,10,sizeof(ch0),cmp_2);/從大到小 for(i=0;i10;i+) printf(%c ,chi); printf(n);,8,應(yīng)用qsort對(duì)結(jié)構(gòu)體一級(jí)排序: #include #include struct coord int x; int y; data100; int cmp(struct coord *a ,struct coord *b) /根據(jù)y的大小排序 return a-y - b-y ; void main() int sum=0,n; int i,j; /freopen(in.txt,r,stdin); while(sca
8、nf(%d, 輸入: 4 0 2 2 1 3 8 6 3 0,9,應(yīng)用qsort對(duì)結(jié)構(gòu)體二級(jí)排序: #include #include struct coord int x; int y; data100; int cmp(struct coord *a ,struct coord *b) if(a-x != b-x) return a-x - b-x; /按照x從小到大排序,當(dāng)x相等時(shí)按照y從大到小排序 else return a-y - b-y ; void main() int sum=0,n; int i,j; freopen(in.txt,r,stdin); while(scanf(%d, 輸入: 5 2 2 2 1 4 3 3 9 4 2 0,10,對(duì)字符串排序(簡單了解): struct In int data; char str100; s100; /按照結(jié)構(gòu)體中字符串str的字典順序排序 int cmp (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年室內(nèi)設(shè)計(jì)合同格式范文(二篇)
- 2024年委托理財(cái)合同參考樣本(三篇)
- 2024年實(shí)驗(yàn)室人員管理制度樣本(四篇)
- 2024年安全隱患自檢自查制度例文(六篇)
- 2024年幼兒園小班下學(xué)期教學(xué)計(jì)劃樣本(五篇)
- 2024年大學(xué)生實(shí)習(xí)總結(jié)例文(三篇)
- 2024年原材料購銷合同參考范本(二篇)
- 2024年學(xué)校安全工作領(lǐng)導(dǎo)小組工作制度范文(二篇)
- 2024年小學(xué)體育教學(xué)工作計(jì)劃范本(二篇)
- 2024年地理教師工作計(jì)劃樣本(三篇)
- 淺談三新背景下課堂教學(xué)方式的變革 論文
- 咽喉癌病歷書寫
- 數(shù)據(jù)中心運(yùn)維管理方案
- 2023年佛山市圖書館招考工作人員筆試參考題庫(共500題)答案詳解版
- “跨媒介敘事”理論研究
- 大型活動(dòng)安保服務(wù)投標(biāo)方案
- 非傳統(tǒng)安全研究與中國
- 河南省南陽市宛城區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期中地理試題
- 酒店客房服務(wù)員考核表
- 第1課 社會(huì)主義在中國的確立與探索【中職專用】高一思想政治《中國特色社會(huì)主義》(高教版2023基礎(chǔ)模塊)
- 后勤物業(yè)集中采購方案
評(píng)論
0/150
提交評(píng)論