資源描述:
《排序算法實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告題目:專(zhuān)業(yè):班級(jí):學(xué)號(hào):姓名:指導(dǎo)老師:時(shí)間:6一、課程設(shè)計(jì)題目及所涉及知識(shí)點(diǎn)設(shè)計(jì)題目是“排序算法的實(shí)現(xiàn)”,所涉及的知識(shí)點(diǎn)主要是:冒泡排序法以及直接插入排序法的代碼實(shí)現(xiàn)。。二、課程設(shè)計(jì)思路及算法描述設(shè)計(jì)思路:首先構(gòu)建大體的循環(huán)框架,然后再框架中逐漸添加各個(gè)排序的功能以及各自單獨(dú)的循環(huán)過(guò)程。算法1:冒泡排序法輸入:一組沒(méi)有順序的數(shù)據(jù)輸出:排序完成的數(shù)據(jù)描述:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)
2、和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對(duì)數(shù)開(kāi)始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過(guò)程,直至最終完成排序。算法2:直接插入排序法輸入:一組沒(méi)有順序的數(shù)據(jù)輸出:排序完成的數(shù)據(jù)描述:第一趟
3、比較前兩個(gè)數(shù),然后把第二個(gè)數(shù)按大小插入到數(shù)組中;6第二趟把第三個(gè)數(shù)據(jù)與前兩個(gè)數(shù)從前向后掃描,把第三個(gè)數(shù)按大小插入到有序表中;依次進(jìn)行下去,進(jìn)行了(n-1)趟掃描以后就完成了整個(gè)排序過(guò)程。三、課程設(shè)計(jì)中遇到的難點(diǎn)及解決辦法冒泡排序法的次數(shù)限制問(wèn)題,直接插入中崗哨的設(shè)置以及數(shù)據(jù)的整體挪動(dòng)。四、總結(jié)通過(guò)本次的課程設(shè)計(jì),對(duì)于數(shù)據(jù)結(jié)構(gòu)中的排序思想有了更深的了解,同時(shí)對(duì)冒泡和直接插入的方法能夠熟練運(yùn)用了,但是仍然是有很多不足之處,在代碼的書(shū)寫(xiě)以及排序思想的轉(zhuǎn)換上不能一起呵成需要借助課本。以后我會(huì)更加努力了解編程,
4、成為有用之材。五、附錄—主要源程序代碼及運(yùn)行結(jié)果#includevoidmaopao(inta[],intf){intb[100],i,j,x,z;for(i=0;i=1;j--){for(x=0;xb[x+1]){z=b[x];b[x]=b[x+1];b[x+1]=z;}}}for(i=0;i<=f-1;i++)printf("%d",b[i]);}voidrmaopao(inta[],i
5、ntc,intf){intb[100],i,j,x,z;for(i=0;i=f-c;j--){for(x=0;xb[x+1]){z=b[x];b[x]=b[x+1];b[x+1]=z;}}}for(i=0;i<=f-1;i++)6printf("%d",b[i]);}voidcharu(inta[],intf){intb[100],i,j,x,z;for(i=0;i<=f-1;i++)b[i+1]=a[i];
6、for(i=2;i<=f;i++){if(b[i]<=b[1]){b[0]=b[i];for(j=i;j>=2;j--){b[j]=b[j-1];}b[1]=b[0];}elseif(b[i]>b[1]&&b[i]=b[x]&&b[i]<=b[x+1]){for(z=i;z>x+1;z--)b[z]=b[z-1];break;}elsecontinue;}b[x+1]=b[0];}elsecontinue;}
7、for(i=1;i<=f;i++)printf("%d",b[i]);}voidrcharu(inta[],inte,intf){intb[100],i,j,x,z;for(i=0;i<=f-1;i++)b[i+1]=a[i];for(i=2;i<=e+1;i++){if(b[i]<=b[1]){b[0]=b[i];for(j=i;j>=2;j--){b[j]=b[j-1];}b[1]=b[0];}elseif(b[i]>b[1]&&b[i]
8、i-2;x++){if(b[i]>=b[x]&&b[i]<=b[x+1]){for(z=i;z>x+1;z--)b[z]=b[z-1];break;}elsecontinue;}b[x+1]=b[0];}elsecontinue;}6for(i=1;i<=f;i++)printf("%d",b[i]);}voidmain(){printf("*********************************************************