![數(shù)據(jù)結(jié)構(gòu) 內(nèi)部排序?qū)嶒?yàn)_第1頁(yè)](http://file4.renrendoc.com/view3/M02/09/10/wKhkFmasZ5uAAiOeAABslHYRBaE921.jpg)
![數(shù)據(jù)結(jié)構(gòu) 內(nèi)部排序?qū)嶒?yàn)_第2頁(yè)](http://file4.renrendoc.com/view3/M02/09/10/wKhkFmasZ5uAAiOeAABslHYRBaE9212.jpg)
![數(shù)據(jù)結(jié)構(gòu) 內(nèi)部排序?qū)嶒?yàn)_第3頁(yè)](http://file4.renrendoc.com/view3/M02/09/10/wKhkFmasZ5uAAiOeAABslHYRBaE9213.jpg)
![數(shù)據(jù)結(jié)構(gòu) 內(nèi)部排序?qū)嶒?yàn)_第4頁(yè)](http://file4.renrendoc.com/view3/M02/09/10/wKhkFmasZ5uAAiOeAABslHYRBaE9214.jpg)
![數(shù)據(jù)結(jié)構(gòu) 內(nèi)部排序?qū)嶒?yàn)_第5頁(yè)](http://file4.renrendoc.com/view3/M02/09/10/wKhkFmasZ5uAAiOeAABslHYRBaE9215.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)與算法課程實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)六:排序?qū)嵺`
姓名:沈靖雯
班級(jí):14信科二班
學(xué)號(hào):2022326601094
實(shí)驗(yàn)六排序?qū)嵺`
【實(shí)驗(yàn)內(nèi)容】
實(shí)現(xiàn)各排序算法并進(jìn)行性能比較
【實(shí)驗(yàn)?zāi)康摹?/p>
掌握各排序算法的實(shí)現(xiàn)方法,并分析各排序算法的時(shí)間和空間性能。
【問(wèn)題描述】
實(shí)現(xiàn)各排序算法,必須實(shí)現(xiàn)希爾排序和快速排序算法,其他排序算法選做,
并分析各算法的性能。
【問(wèn)題實(shí)現(xiàn)】
(1)數(shù)據(jù)結(jié)構(gòu)類
#defineMAXSIZE20
typedefstruct{
intkey;
)Redtype;
typedefstruct{
Redtyper[MAXSIZE+l];
intlength;
}SqList;
(2)主要算法函數(shù):
1).希爾排序;
一趟希爾插入排序代碼如下,其中dk為先后記錄位置的增量,一次希爾
排序后,記錄按增量dk有序:
voidShelllnsert(SqList&QJntdk)〃希爾插入排序
{inti,j;
for(i=dk+l;i<=Q.length;i++)
if(Q.r[i].key<Q.r[i-dk].key){
Q.r[0]=Q.r[i];
for(j=i-dk;j>0&&(Q.r[0].key<Q,r[j].key);j-=dk)
Q.r[j+dk]=Q.r[j];
Q.r[j+dk]=Q.r[O];
}
for(inti=l;i<=Q.length;i++){〃一次希爾排序輸出
printf("%d",Q.r[i].key);
)
printf("\n");
}
完整實(shí)現(xiàn)序列的希爾排序代碼如下,其中增量序列簡(jiǎn)化為例題所用序列5,3,1:
voidShellsort(SqList&Q)〃希爾排序
{intdlta[10];
for(intk=5;k>0;k-=2){
She川nsert(Qk);
}
)
2).快速排序;
快速排序是對(duì)起泡排序的一種改進(jìn)。下面是一次快速排序的函數(shù)代碼,
其中pivotkey表示軸樞,用子表第一個(gè)記錄做軸樞記錄,函數(shù)返回新的軸樞位置:
intpartition(SqList&Q,intlowjnthigh)
(
Q.r[0]=Q.r[low];
intpivotkey;
pivotkey=Q.r[low].key;
while(low<high){
while(low<high&&Q,r[high].key>=pivotkey)-high;
Q.r[low]=Q.r[high];
while(low<high&&Q,r[low].key<=pivotkey)++low;
Q.r[high]=Q.r[low];
)
Q.r[low]=Q.r[0];
for(inti=l;iv=QJength;i++){//一次快速排序輸出
printf(n%d”,Q.r[i].key);
}
printf("\n");
returnlow;
)
遞歸法完整實(shí)現(xiàn)序列的快速排序,每次將序列以軸樞為界分為兩部份
(子序列),對(duì)子序列分別進(jìn)行快速排序,再將子序列以其軸樞為界分為兩部份
進(jìn)行快速排序……以此類推直至序列全部排序完成:
voidQSort(SqList&(Xintlowjnthigh){
if(low<high){
intpivotloc;
pivotloc=partition(Q,low,high);
QSort(Q,low,pivotloc-l);
QSort(Q,pivotloc+l,high);
}
}
voidQuickSort(SqList&Q){
QSort(Q,l,Q.length);
)
3).起泡排序;
在寫快速排序之前寫了起泡排序比對(duì),起泡排序代碼詳細(xì)見附件。
【總結(jié)】
希爾排序:將序列分組為子序列分別進(jìn)行直接插入排序,關(guān)鍵字較小的記錄
跳躍式前移,在進(jìn)行最后一趟增量為1的插入排序時(shí),序列已基本有序,只需少
量比較和挪移即可完成排序。時(shí)間復(fù)雜度具體取決于所取的增量序列函數(shù),相較
于直接插入排序低;希爾排序空間復(fù)雜度0(1)。
起泡排序:若初始序列正序,只需一趟排序,進(jìn)行n-1次比較,不挪移記錄,
時(shí)間復(fù)雜度為0(n);最壞情況即初始序列為逆序,需進(jìn)行n-1次排序,
(i-l)=n(n-1)/2次比較,并作等數(shù)量級(jí)挪移,時(shí)間復(fù)雜度為0(*);起泡
i=n
排序空間復(fù)雜度0(1)。
快速排序:作為起泡排序的改進(jìn),平均時(shí)間為T⑻;由的,k為某個(gè)常
avg
數(shù),在所有同數(shù)量級(jí)(O(nlogn))排序方法中平均性能最好。時(shí)間復(fù)雜度最好情
況O(nlogn),最壞情況當(dāng)初始序列按關(guān)鍵字有序或者基本有序時(shí),蛻化為起泡排序,
時(shí)間復(fù)雜度為。(小)??焖倥判蚩臻g復(fù)雜度O(nlogn)。
相比較而言希爾排序和快速排序時(shí)間性能較好,空間性能則希爾排序和起泡
排序較好。
程序運(yùn)行截圖:
圖1
^牛:
源代碼:
#include<stdio.h>
include<math.h>
#defineMAXSIZE20
typedefstruct{
intkey;
}Redtype;
typedefstruct{
Redtyper[MAXSIZE+1];
intlength;
}SqList;
voidShelllnsert(SqList&Q,intdk)〃希爾插入排序
{intij;
for(i=dk+1;i<=Q.length;i++)
if(Q.r[i].key<Q.r[i-dk].key){
Q.r[0]=Q.r[i];
for(j=i-dk;j>0&&(Q.r[0].key<Q.r[j].key);j-=dk)
Q.r[j+dk]=Q.r[j];
Q.r[j+dk]=Q.r[O];
)
for(inti=1;iv=Q」ength;i++){//一次希爾排序輸出
printf("%d",Q.r[i].key);
)
printf("\n");
)
voidShellsort(SqList&Q)〃希爾排序
{intdlta[10];
for(intk=5;k>0;k-=2){
Shelllnsert(Q,k);
〃快速排序
intpartition(SqList&Q,intlow,inthigh){
Q.r[0]=Q.r[low];
intpivotkey;
pivotkey=Q.r[low].key;
while(low<high){
while(low<high&&Q,r[high].key>=pivotkey)-high;
Q.r[low]=Q.r[high];
while(low<high&&Q,r[low].key<=pivotkey)++low;
Q.r[high]=Q.r[low];
)
Q.r[low]=Q.r[0];
for(inti=1;i<=Q」ength;i++){〃一次快速排序輸出
printf("%d",Q.r[i].key);
)
printf("\n");
returnlow;
)
voidQSort(SqList&Q,intlowjnthigh){
if(low<high){
intpivotloc;
pivotloc=partition(Q,low,high);
QSort(Q,low,pivotloc-1);
QSort(Q,pivotloc+1,high);
)
)
voidQuickSort(SqList&Q){
QSort(Q,1,Q.length);
)
voidBubbleSort(SqList&Q)〃冒泡排序
{intx,m;
intflag=1;
m=Q.length-1;
while((m>0)&&(flag==1))
{flag=O;
for(intj=1;j<=m;j++)
if(Q.r[j].key>Q.r[j+1].key)
(
flag=1;
x=Q.r[j].key;
Q.r[j].key=Q.r[j+1].key;
Q.r[j+1].key=x;
)
for(inti=1;i<=Q.length;i++){〃一次冒泡排序輸出
printf("%d",Q.r[i].key);
)
printf("\n");
m-;
intmain()
{SqListQ,L,M;
printf
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TAS2940-生命科學(xué)試劑-MCE-8412
- Ocifisertib-hydrochloride-CFI-400945-hydrochloride-生命科學(xué)試劑-MCE-6463
- Dehydrocannabifuran-6-Methyl-9-isopropenyl-3-pentyldibenzofuran-1-ol-生命科學(xué)試劑-MCE-8289
- 7-Methoxy-9-methylfuro-2-3-b-quinoline-4-5-8-9H-trione-生命科學(xué)試劑-MCE-1580
- 3-Methyl-L-tyrosine-生命科學(xué)試劑-MCE-8000
- 二零二五年度虛擬股員工持股計(jì)劃協(xié)議
- 二零二五年度煤礦開采權(quán)轉(zhuǎn)讓合同
- 2025年度順豐速運(yùn)高端物流服務(wù)合同模板
- 施工單位施工合同管理要點(diǎn)
- 疫情下教育變革的啟示-學(xué)校與醫(yī)院合作的必要性與優(yōu)勢(shì)分析
- DB63T 2357-2024 危化品常壓儲(chǔ)罐安全管理規(guī)范
- 2022-2023學(xué)年五年級(jí)數(shù)學(xué)春季開學(xué)摸底考(四)蘇教版
- 【螞蟻?!?024中國(guó)商業(yè)醫(yī)療險(xiǎn)發(fā)展研究藍(lán)皮書
- 授信審批部工作計(jì)劃及思路
- 財(cái)務(wù)管理學(xué)(第10版)課件 第3章 財(cái)務(wù)分析
- 小學(xué)語(yǔ)文大單元教學(xué)設(shè)計(jì)與實(shí)施
- 小學(xué)升初中六年級(jí)數(shù)學(xué)考試試卷含答案(達(dá)標(biāo)題)
- 2024年長(zhǎng)沙航空職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
- 腫瘤微環(huán)境在癌癥進(jìn)展中的作用研究
- 上海市發(fā)展改革研究院工作人員招考聘用12人公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(kù)(共500題)答案詳解版
- 2024年上海市各區(qū)高三語(yǔ)文二模試卷【文言文閱讀題】匯集練附答案解析
評(píng)論
0/150
提交評(píng)論