下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)(c語言版)題集答案-第十章-內(nèi)部排序第十章內(nèi)部排序10.23void Insert_Sortl (SqList &L)監(jiān)視哨設(shè)在高下標端的插入排序算法k=L. length;for(i=k-l;i;i) 從后向前逐個插入排序 if(L.ri.key>L.ri+l.key) L.rk+l.key=L.rEi.key; 監(jiān)視哨 for(j=i+l;L. rj. key>L. ri. key; +j) L. rj-1. key=L. rj. key; 前移 L. rj-1. key=L. rk+1. key; 插入/Insert_Sort1 10. 24void BiI
2、nsert_Sort (SqList &L) 二路插入排序的算法int dMAXSIZE ; /輔助存儲 x=L. r . key; d =x; first=l ;final=l;for(i=2;i<=L. length;i+) if (L. r i. key>=x) 插入前部for (j=final; dj >L. r i. key; j) dj+l=dj;dj+l=L. ri.key; final+; else 插入后部for(j=first;djdj-l=dj;d(j-2)%MAXSIZE+l=L. ri. key;first=(first-2)%MAXSIZE
3、+l; 這種形式的表達式是為了兼顧first=l的情 況 /forfor(i二first, j=l;di;i=i%MAXSIZE+l, j+)將序列復(fù)制回去L. rj. key=dEi; /BiInsert_Sort 10. 25void SLInsert_Sort (SLList &L) 靜態(tài)鏈表的插入排序算法L. r0. key=0;L. r L0. next=l;L. rl. next=0; /建初始循環(huán)鏈表 for (i=2; i<=L. length; i+) 逐個插入p=0;x=L. ri. key;while(L. rEL. rLp. next. keyp=L. r
4、Lpj. next; q=L. rip, next; L. rLp. next=i;L.ril.next=q; /forp=L. r0. next; for(i=l;iwhile(pq=L. rEp. next; if(p!=i) L. rpjL. rEi ; L. rLi. next=p; p=q; /for/SLInsert_Sort 10. 26void Bubble_Sortl(int a ,int n)對包含n個元素的數(shù)組a進行改進的冒泡排 序changefl; "change指示上一趟冒泡中最后發(fā)生交換的元素while (change) for (c=0, i=0; ii
5、f (ai>ai+l) c=i+1; /c指示這一趟冒泡中發(fā)生交換的元素change二c; /while/Bubble_Sortl 10. 27void Bubble_Sort2(int a int n)相鄰兩趟是反方向起泡的冒泡排序算法(low=0;high=n-l; /冒泡的上下界 change=l; while(low change=0;for (i=low; iif (ai>ai+l) change;high一; 修改上界for (i=high;i>low; i-) /從下向上起泡 if (ai change;low+; 修改下界/while)/Bubble.Sort
6、2 10. 28void Bubble_Sort3(int a ,int n)對上一題的算法進行化簡,循環(huán)體中只包含一 次冒泡int b 3 ; b0為冒泡的下界,b 2 為上界,b無用d=l;bO=O;b 2 =n-l; d為冒泡方向的標識,1為向上1為向下changed; while(b0 change:。;for(i=bl-d ;i!=bl+d ;i+=d) /統(tǒng)一的冒泡算法 if (ai-ai+d)*d>0) /注意 這個交換條件aiai+d; change=l; bl+d-二d; 修改邊界 d*=-l; /換個方向/while/Bubble_Sort3 10.29void 0E
7、_Sort (int aE , int n) 奇偶交換排序的算法(change=l;while (change) change=0;for(i=l;iif(aLi>aLi+lJ) change=l; for(i=0;iif(ai>aCi+l) aiai+l;change=l; /while /0E_Sort分析:本算法的結(jié)束條件是連續(xù)兩趟比較無交換發(fā)生10. 30typedef struct int low; int high; boundary; 子序列的上下界類型void QSort_NotRecurve (int SQList &L)快速排序的非遞歸算法low=l;h
8、igh二L. length;InitStack(S) ; S 的元素為 boundary 類型 while (lowif(high-low>2) 如果當前子序列長度大于3旦尚未排好序pivot=Partition(L, low, high); 進行一趟劃分 if (high-pivot>pivot-low) Push(S, pivot+l, high); 把長的子序列邊界入棧high=pivotT; 短的子序列 留待下次排序)else Push(S, low, pivotal); low=pivot+l; /ifelse if(low(Easy_Sort (L, low, high
9、); 直接進行比較排序low二high; 當前子序列標志為己排 好序1else 如果當前子序列已排好序但棧中還有未排序的子序列Pop(S, a); 從棧中取出一個子序列 low=a. low; high=a. high; /while/QSort_NotRecurveint Partition(SQList &L, int low, int high)一趟劃分的算法,與書上相同L. r 01=L. r low;pivotkey=L. rElow, key; while(lowwhiledow=pivotkey) high-;L. rlow=L. rhigh; while(lowlow+
10、; L. rEhigh=L. rLlowJ; /whileL. rlow=L. rEO; return low; /Partitionvoid Easy_Sort (SQList &L, int low, int high)對長度小'3 的子序列進行比較排 序if (high-low=l) 子序列只含兩個元素if (L. rlow. key>L. rhigh, key) L. rlowL. rhigh ; else 子序列含有三個元 素if (L. rlow. key>L. rlow+11. key) L. r lowL. rlow+1;if (L. r llow+1. key>L. rhigh. key) L. r E1ow+1L. rhigh;if (L. rlow. key>L. r low+1. key) L. rlowL. rlow+l ; void Divide(int a , int n)把數(shù)組a中所有值為負的記錄調(diào)到非負的記錄之前l(fā)ow=0;high=n-l; while(lowwhile (low=0) high; 以 0 作為虛擬的樞軸記錄 a low a high;while (Iowa low a high ; /Divide 10. 32type
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧省大連市中山區(qū)20232024學(xué)年九年級上學(xué)期期末考試物理化學(xué)試題-初中化學(xué)
- 銀行業(yè)務(wù)發(fā)展策略總結(jié)
- 化妝行業(yè)營業(yè)員崗位總結(jié)
- 浙江省杭州市余杭區(qū)、蕭山區(qū)2023-2024學(xué)年六年級上學(xué)期英語期末試卷
- 《保險經(jīng)營篇》課件
- 2021年湖北省恩施自治州公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年廣西壯族自治區(qū)梧州市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年安徽省六安市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年四川省遂寧市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2021年山西省晉中市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 數(shù)字媒體技術(shù)基礎(chǔ)知識單選題100道及答案解析
- 無痛分娩與鎮(zhèn)痛管理制度
- 2025屆中考英語復(fù)習(xí)課件(外研版廣西專用)13-八年級(下)Modules 1-2
- 2024-2025學(xué)年年八年級數(shù)學(xué)人教版下冊專題整合復(fù)習(xí)卷第11章 全等三角形單元試卷(含答案)
- 蜜雪冰城合作加盟合同
- 青海省西寧市2021-2022學(xué)年八年級上學(xué)期期末歷史試題(解析版)
- 2024年外科的工作計劃和建議外科工作計劃
- 陪診培訓(xùn)課件
- 紅色簡約2025蛇年介紹
- 專題3-6 雙曲線的離心率與常用二級結(jié)論【12類題型】(解析版)-A4
- 醫(yī)療行業(yè)銷售內(nèi)勤工作匯報
評論
0/150
提交評論