資源描述:
《直接插入排序、冒泡排序、快速排序-副本》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、寧德師范學(xué)院計(jì)算機(jī)系實(shí)驗(yàn)報(bào)告(2014—2015學(xué)年第一學(xué)期)課程名稱數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)名稱實(shí)驗(yàn)七數(shù)據(jù)的排序與檢索專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)年級(jí)2013級(jí)學(xué)號(hào)B2013102141姓名于指導(dǎo)教師毛雁明實(shí)驗(yàn)日期2014-12-2實(shí)驗(yàn)?zāi)康呐c要求:1、掌握數(shù)據(jù)結(jié)構(gòu)中的幾種常用排序方法:插入排序、快速排序、選擇排序等。2、遇到實(shí)際問題能夠選擇適當(dāng)?shù)呐判蚍椒ń鉀Q。實(shí)驗(yàn)設(shè)備(環(huán)境):微機(jī)、C語(yǔ)言編程環(huán)境(VC++)實(shí)驗(yàn)內(nèi)容:給定的數(shù)組list[N]={213,111,222,77,400,300,987,1024,632,555},試分別用直接插入排序、冒泡排序、快速排
2、序?qū)ι鲜鰯?shù)據(jù)進(jìn)行排序。要求:每種排序算法編寫為獨(dú)立的自定義函數(shù)且要求輸出每趟排序后的數(shù)據(jù)排列序列情況。實(shí)驗(yàn)步驟、實(shí)驗(yàn)結(jié)果及分析:(1)函數(shù)代碼#includevoidBubbleSort(intr[],intlen){inti,j,exchange,k;for(i=1;i=i;j--)if(r[j+1]3、第%d趟結(jié)果:",i);for(k=1;k<=len;k++)printf("%d",r[k]);printf("");}}voidInsertSort(intr[],intlen){inti,j,k;for(i=2;i<=len;i++){r[0]=r[i];j=i-1;while(r[0]4、[],inti,intj){intk,pivot=r[i];statica=1;while(i=pivot)j--;if(i5、ivotpos,k;if(low6、11,222,77,400,300,987,1024,632,555};printf("ttt冒泡排序:");BubbleSort(data1,10);printf("ttt直接插入排序:");InsertSort(data2,10);printf("ttt快速排序:");quicksort(data3,low,high);(1)}主函數(shù)流程圖(2)運(yùn)行結(jié)果(1)實(shí)驗(yàn)總結(jié)本實(shí)驗(yàn)主要考查直接插入排序、冒泡排序、快速排序三項(xiàng)函數(shù)調(diào)用,難度還是有的,需要我們首先理解這三種排序方式,排序?qū)嵸|(zhì),然后我們就需要寫程序
7、代碼,主函數(shù)還是很好寫的,快速排序算法代碼是個(gè)難點(diǎn),還要嵌套一個(gè)調(diào)用函數(shù)需要我們?cè)诓莞寮埳鲜孪妊菟阆?,進(jìn)行多次調(diào)試,達(dá)到要求。直接插入排序的方法是首先在當(dāng)前有序區(qū)r[i..i-1]中查找人r[i]的正常插入位置k;然后將r[k..i-1]中的記錄均后移一個(gè)位置,騰出k位置上的空間插入r[i]。其他方法與這有點(diǎn)不同,畫主函數(shù)流程圖要求我們對(duì)代碼整體有個(gè)框架認(rèn)識(shí),首先動(dòng)態(tài)分配空間,建立順序表,然后輸入整數(shù)進(jìn)行判斷,不符合時(shí)繼續(xù)輸入整數(shù),符合時(shí)進(jìn)行選擇,然后執(zhí)行功能,選擇退出時(shí),整個(gè)程序都退出。雖然經(jīng)過上學(xué)期對(duì)C語(yǔ)言半年的學(xué)習(xí)可以說掌握的基本可以,但是
8、幾天不練就會(huì)手生,甚至不知如何下手,這時(shí)我們要查閱課本,通過這次實(shí)驗(yàn)的練習(xí),我在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的同時(shí)也對(duì)C語(yǔ)言進(jìn)行了一次復(fù)習(xí)回顧,可謂收獲