版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘要</b></p><p> 近幾年來,C語言發(fā)展迅速,而且成為最受歡迎的語言之一,主要原因是它具有強大的功效,很多著名的系統(tǒng)軟件就是由C語言編寫出來的。它與匯編語言的結(jié)合,更體現(xiàn)出C語言的優(yōu)越性。</p><p> 排序算法主要有直接插入排序,折半插入排序,希爾排序,冒泡排序,雙向冒泡排序,快速排序,選擇排序,堆排序,基數(shù)排序這幾
2、種。</p><p> 通過對各種排序方法的比較,我們能夠很直觀的發(fā)現(xiàn)各種排序方法的特點及各自的優(yōu)缺點。</p><p> 此次課程設(shè)計主要挑選了選擇排序、插入排序、冒泡排序這三種排序方法,通過對這三種排序方法的比較,希望能夠讓大家對一些排序方法有更加直觀、深入的了解。</p><p> 設(shè)計中主要解決了用time()、srand()函數(shù)輔助rand()函數(shù)隨
3、機產(chǎn)生了0到99999之間的數(shù)據(jù);借助指針申請了動態(tài)內(nèi)存解決了將同一隨機數(shù)組的三次復(fù)制進而確保在相同隨機數(shù)組的基礎(chǔ)上三種比較算法的比較;在各種算法中運用clock()函數(shù)計算完成比較所用的時間,并在各種比較算法的編程理解中完成比較、交換次數(shù)的計數(shù);將隨機數(shù)組寫入文件等問題。</p><p> 關(guān)鍵詞:隨機數(shù) 排序 交換 時間 </p><p><b> 目錄</b>
4、;</p><p> 設(shè)計內(nèi)容、設(shè)計參數(shù)及要求······························
5、3;········1</p><p> 設(shè)計內(nèi)容·······················
6、3;···························1</p><p> 設(shè)計參數(shù)····
7、3;····································
8、183;·········1</p><p> 要求······················
9、3;································1</p><p> 總體
10、設(shè)計思路····································
11、···············2</p><p> 設(shè)計系統(tǒng)的功能················
12、83;····························2</p><p> 算法思想···
13、83;····································&
14、#183;··········2</p><p> 系統(tǒng)的總體框架····················
15、3;························3</p><p> 系統(tǒng)的總體流程圖·······
16、····································4<
17、;/p><p> 功能模塊的具體設(shè)計································
18、;·············5</p><p> main( )主函數(shù)··················
19、;·····························5</p><p> SelectSort( )函數(shù)·
20、····································
21、3;·······7</p><p> InsertSort( )函數(shù)·······················
22、;······················9</p><p> PopSort( )函數(shù)········
23、83;····································&
24、#183;11</p><p> 將隨機數(shù)寫入程序······························
25、183;···········13</p><p> welcome( )函數(shù)···················
26、;··························14</p><p> 模塊的調(diào)試及測試·····
27、····································
28、3;····15</p><p> 總結(jié)與個人體會···························
29、·····················17</p><p> 總結(jié)···········&
30、#183;····································
31、;······17</p><p> 個人體會·························
32、3;························17</p><p> 致謝········
33、;····································
34、83;·············19</p><p> 參考文獻··················
35、183;···································20<
36、/p><p> 附程序源代碼································
37、83;····················21</p><p> 1. 設(shè) 計 內(nèi) 容 和 要 求</p><p><b> 1.1 設(shè)計內(nèi)容</b></p
38、><p> ?、磐ㄟ^隨機函數(shù)隨機生成100000個數(shù)字,這些數(shù)字都是在[0,99999]之間。</p><p> (2)并通過設(shè)計的排序算法進行排序。這些排序算法中包括冒泡法、選擇法、插入法,也可以適當(dāng)選擇其他算法,但必須是較為典型的排序算法。</p><p> (3)排序完畢后應(yīng)給出相應(yīng)的比較信息,其中包括排序時間,比較次數(shù)和交換次數(shù)等信息。</p>
39、<p> (4)在程序的主界面顯示出最后的比較結(jié)論。</p><p> (5)查看完比較結(jié)果后,即可點擊回車退出系統(tǒng)</p><p><b> 1.2 設(shè)計參數(shù)</b></p><p> (1)將排序前生成的100000個隨機數(shù)存入一個文本文件中,該文件命名為BeforeSort.txt。</p><p&
40、gt; (2)將排序好的數(shù)字分別按照不同的排序方式存入不同的文件中,冒泡法排序后的數(shù)字存入PopSort.txt中,選擇法排序后的數(shù)字存入SelectSort.txt中,插入法排序后的數(shù)字存入InsertSort.txt中。</p><p><b> 1.3 要求</b></p><p> 1.3.1 基本要求</p><p> 精確測
41、試上述三種排序方法對同樣的數(shù)據(jù)進行排序所消耗的時間,比較次數(shù)以及交換次數(shù),明確各種排序的編寫方法,分析各種排序方法在不同情況下的優(yōu)劣。</p><p> 1.3.2 附加要求</p><p> (1)程序啟動后有較漂亮的封面頁。</p><p> (2 ) 結(jié)果以列表形式,較友好的人機界面顯示</p><p> 2. 總 體 設(shè) 計
42、思 路</p><p> 2.1 設(shè)計系統(tǒng)的功能</p><p> ?、旁凇癇efore.txt”中存儲隨機數(shù)。</p><p> ?、圃凇盨electSort.txt”、”InsertSort.txt”、”PopSort.txt”</p><p> 中存儲經(jīng)過排序后的有序數(shù)列。</p><p> ?、峭ㄟ^對主界面
43、中三種排序方法所用時間、比較次數(shù)、交換次數(shù)等信息的觀察,了解到各自排序方法的特點及優(yōu)劣。</p><p><b> 2.2 算法思路</b></p><p> 2.1.1 選擇排序</p><p> 為了便于理解,設(shè)有10個數(shù)分別存在數(shù)組元素a[0]~a[9]中。選擇排序法是由大到小依次定位a[0]~a[9]中恰當(dāng)?shù)闹?,a[9]中放的自然
44、是最小的數(shù)。如定位a[0],先假定a[0]中當(dāng)前值是最大數(shù),a[0]與后面的元素一一比較,如果a[4]更大,則將a[0]、a[4]交換,a[0]已更新再與后面的a[5]~a[9]比較,如果a[8]還要大,則將a[0]、a[8]交換,a[0]又是新數(shù),再與a[9]比較。一輪比完以后,a[0]就是最大的數(shù)了,本次比武的武狀元誕生了,接下來從a[1]開始,再來一輪a[1]就是次大的數(shù),然后從a[2]開始,當(dāng)比到a[8]以后,排序就完成了。&l
45、t;/p><p> 2.2.2 插入排序</p><p> 每次將一個待排序的數(shù)據(jù)元素,插入到前面已經(jīng)排好序的數(shù)列中的適當(dāng)位置,使數(shù)列依然有序,直到待排序數(shù)據(jù)元素全部插入完為止。即經(jīng)過i-1遍處后,L[1..i-1]己排好序。第i遍處理僅將L插入L[1..i-1]的適當(dāng)位置p,原來p后的元素一一向右移動一個位置,使得L[1..i]又是排好序的序列。</p><p>
46、<b> 2.2.3冒泡排序</b></p><p> 首先將第一個記錄的隨機數(shù)和第二個記錄的隨機數(shù)進行比較,若為逆序,則將兩個記錄交換,然后比較第二個記錄和第三個記錄的隨機數(shù)。依此類推,直到第N-1和第N個記錄的隨機數(shù)進行過比較為止。上述為第一趟排序,其結(jié)果使得關(guān)鍵字的最大紀錄被安排到最后一個記錄的位置上。然后進行第二趟起泡排序,對前N-1個記錄進行同樣操作。一共要進行N-1趟起泡排序
47、</p><p> 2.3系統(tǒng)的總體框架圖</p><p> 2.4 系統(tǒng)的總體流程圖</p><p> 3.功能模塊的具體設(shè)計</p><p> 3.1 main( ) 主函數(shù)</p><p> 主函數(shù)功能比較簡單,用srand( (unsigned)time( NULL ) )語句以及for循環(huán)語句產(chǎn)生隨
48、機數(shù)。打開"BeforeSort.txt"文本文檔,將隨機數(shù)放入該文本文檔中。使用動態(tài)內(nèi)存,定義選擇、插入、冒泡三種排序方法。在主函數(shù)的前面要寫必須的頭文件,預(yù)定義語句。</p><p> 3.1.1隨機函數(shù)的產(chǎn)生</p><p> 函數(shù)rand()將產(chǎn)生一個在0到RAND_MAX之間的整數(shù),其中RAND_MAX是頭文件< stdio.h >中定義的一個
49、符號常量,并且至少是32767,即16位二進制數(shù)所能表示的最大整數(shù)。并可以利用比例縮放(求余運算)產(chǎn)生一系列0到所需數(shù)(小于RAND_MAX)之間的數(shù) 。但實際操作中最大只能得到0到10000之間的數(shù),所以采用了分別獲取0到10000之間的數(shù)加上0到10之間的數(shù)最終得到0到100000之間的數(shù)的方法。</p><p> 但是rand()函數(shù)具有重復(fù)性,并且這種重復(fù)性可用于驗證該函數(shù)運行正確與否,故要借助sran
50、d()、time()對該函數(shù)進行隨機化。其中,函數(shù)time的返回值是以秒為單位的從1970年1月1日午夜開始到現(xiàn)在所經(jīng)歷的時間,time函數(shù)的返回值被轉(zhuǎn)換成一個無符號的種子傳遞給srand()函數(shù)以產(chǎn)生隨機數(shù)</p><p> 表3.1.1 隨機數(shù)的產(chǎn)生</p><p> 圖3.1.1 隨機數(shù)生成流程圖</p><p> 3.1.2 時間函數(shù)的產(chǎn)生</
51、p><p> 時間函數(shù)的用法,參考如下程序,使用時間函數(shù),需要引入頭文件time.h,同時需要使用函數(shù)clock(),clock()函數(shù)返回近似調(diào)用程序運行時間量的值,該值除以CLOCKS_PER_SEC后轉(zhuǎn)換為秒數(shù).返回-1值表示無法取得時間。</p><p> #include<stdio.h></p><p> #include<time.
52、h></p><p> void main()</p><p><b> {</b></p><p> clock_t start;</p><p> clock_t end;</p><p><b> int t;</b></p><p
53、><b> long i;</b></p><p> start=clock(); //得到程序運行時的時間量的值</p><p> for(i=0;i<=10000;i++); //空循環(huán),耗費時間</p><p> end=clock();</p
54、><p> t=(end-start)/CLOCKS_PER_SEC; //得到空循環(huán)運行的時間</p><p> printf("%d",t);</p><p><b> }</b></p><p> 3.2 SelectSort()函數(shù)</p><p> 利用fo
55、r循環(huán)語句,對“BeforeSort.txt“中的隨機數(shù)進行選擇排序,并打開“SelectSort.txt”文本文檔,將經(jīng)過選擇排序的數(shù)放入該文本文檔。用clock-start及clock-end語句計算出選擇排序所用的時間,用for循環(huán)語句得出比較次數(shù)和交換次數(shù)。用printf將選擇排序時間,比較次數(shù)以及交換次數(shù)這些信息在主界面中輸出。,</p><p> 3.2.1 選擇排序程序</p>&l
56、t;p> void SelectSort(int R[ ],int n) /*選擇排序 </p><p><b> { </b></p><p> int i,k,index,temp;</p><p> double count1=0.0,cpt1=0.0; </p><p><b>
57、; FILE*fp;</b></p><p> clock_t start;</p><p> clock_t end;</p><p> double time1;</p><p> start=clock(); </p><p> for(k=0;k<n-1;k++)</p
58、><p> { index=k;</p><p> for(i=k+1;i<n;i++)</p><p><b> { </b></p><p><b> cpt1++;</b></p><p> if(R[i]<R[index])</p>&
59、lt;p><b> { </b></p><p><b> index=i;</b></p><p><b> } </b></p><p><b> }</b></p><p> if(index!=k){</p><
60、;p><b> count1++;</b></p><p> temp=R[index];</p><p> R[index]=R[k];</p><p> R[k]=temp;</p><p> 圖3.2.1 選擇排序流程圖</p><p> 3.3 InsertSort()函
61、數(shù)</p><p> 利用for循環(huán)語句,對“BeforeSort.txt“中的隨機數(shù)進行選擇排序,并打開“InsertSort.txt”文本文檔,將經(jīng)過插入排序的數(shù)放入該文本文檔。用clock-start及clock-end語句計算出插入排序所用的時間,用for循環(huán)語句得出比較次數(shù)和交換次數(shù)。用printf將插入排序時間,比較次數(shù)以及交換次數(shù)這些信息在主界面中輸出。</p><p>
62、 3.3.1 插入排序程序</p><p> void InsertSort(int R[],int n) /*插入排序*/</p><p><b> {</b></p><p> int i,j,temp;</p><p> double count2=0,cpt2=0,cpt3=0; </
63、p><p><b> FILE*fp;</b></p><p> clock_t start;</p><p> clock_t end;</p><p> double time2;</p><p> start=clock(); </p><p>
64、 for(i=1;i<n;i++)</p><p><b> {</b></p><p> temp=R[i];</p><p> for(j=i-1;j>=0;j--) </p><p><b> { </b></p><p><b>
65、; cpt2++;</b></p><p> if(temp>=R[j])</p><p><b> break;</b></p><p> R[j+1]=R[j];</p><p><b> }</b></p><p> R[j+1]=temp
66、;</p><p> if(j+1==i-1)</p><p><b> count2++;</b></p><p> else count2=count2+0;</p><p><b> }</b></p><p> 圖3.3.1 插入排序流程圖</p>
67、;<p> Popsort()函數(shù)</p><p> 利用for循環(huán)語句,對“BeforeSort.txt“中的隨機數(shù)進行選擇排序,并打開“PoptSort.txt”文本文檔,將經(jīng)過冒泡排序的數(shù)放入該文本文檔。用clock-start及clock-end語句計算出冒泡排序所用的時間,用for循環(huán)語句得出比較次數(shù)和交換次數(shù)。用printf將冒泡排序時間,比較次數(shù)以及交換次數(shù)這些信息在主界面中輸出。
68、</p><p><b> 冒泡排序程序</b></p><p> void PopSort(int R[ ],int n) /*冒泡排序*/</p><p><b> { </b></p><p> int i,j,t;</p><p> double co
69、unt3=0.0, cpt4=0.0; </p><p><b> FILE*fp;</b></p><p> clock_t start;</p><p> clock_t end;</p><p> double time3;</p><p> start=clock();
70、 </p><p> for(i=1;i<n;i++)</p><p><b> { </b></p><p> for(j=0;j<n-i;j++)</p><p><b> { </b></p><p> if(R[j]>R[j+1]
71、)</p><p><b> {</b></p><p><b> count3++;</b></p><p><b> t=R[j];</b></p><p> R[j]=R[j+1];</p><p><b> R[j+1]=t;
72、</b></p><p><b> }</b></p><p><b> cpt4++;</b></p><p><b> }</b></p><p><b> }</b></p><p> 圖3.4.1 冒泡
73、排序流程圖</p><p> 3.5將隨機數(shù)組寫入文件</p><p> 3.5.1 隨機數(shù)組寫入程序</p><p> int *p=NULL;</p><p><b> FILE*fp;</b></p><p> if((fp=fopen("BeforeSort.txt&q
74、uot;,"w")) == NULL) </p><p><b> {</b></p><p> printf("error"); </p><p><b> exit(0);</b></p><p>
75、}for(i=0;i<n;i++)</p><p><b> {</b></p><p> fprintf(fp,"%d ",R[i]); </p><p><b> }</b></p><p> if(fclose(fp))</p
76、><p><b> {</b></p><p> printf("Can not close the file"); </p><p> exit(0); }</p><p> 圖3.5.1 文件寫入流程圖</p><p> 3.6 welcome()函數(shù)&
77、lt;/p><p> 利用system("cls")系統(tǒng)語句,構(gòu)建敲擊”Enter”鍵進入主界面的框架。</p><p> 3.6.1“歡迎”界面程序</p><p> void welcome()</p><p> { printf("\n");</p><p>
78、 printf("\n");</p><p> printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━┓\n"); </p><p> printf(" ┃ 各種排序算法比較 ┃\n"); </p><p> pri
79、ntf(" ┃------------------------------------------------------------------- ┃ \n"); </p><p> printf(" ┃ (c)All Right Reserved wyy ┃\n"); </p><p
80、> printf(" ┃ wcnumberond@163.com ┃\n"); </p><p> printf(" ┃ version 2009 ┃\n"); </p><p> printf("
81、; ┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); </p><p> printf(" Press Enter to Continue……");</p><p> getchar(); </p><p> system("cls");
82、 </p><p><b> }</b></p><p> 4. 模 塊 的 調(diào) 試 及 測 試</p><p> 圖1為測試歡迎“登陸”界面,當(dāng)按“Enter”鍵進入下一界面。</p><p><b> 圖1 登陸界面</b></p><p> 圖2為測
83、試10000個隨機數(shù)經(jīng)過選擇排序、插入排序、冒泡排序后的結(jié)果界面。通過這個界面,可以清楚得得到三種排序方法各自的排序時間、比較次數(shù)以及交換次數(shù)。</p><p> 圖2三種排序各自的結(jié)果</p><p> 5. 總 結(jié) 與 個 人 體 會</p><p><b> 5.1 總結(jié)</b></p><p> ⑴ 該“
84、排序算法比較”基本可以運行,但是還是有不少地方設(shè)計的不太科學(xué),而且有些在C語言課程設(shè)計指導(dǎo)書上的任務(wù)要求沒有很好得運行出來。</p><p> ?、仆瑫r在這次課程設(shè)計中讓我們認識到做程序設(shè)計這項工作中我門要具備以下素質(zhì):① 良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),缺乏文檔,一個軟件系統(tǒng)就缺乏生命力,在未來的查錯,升級以及模塊的復(fù)用時就都會遇到極大的麻煩。② 此外編程是一項高精度的工作所以我們要有規(guī)范化,標(biāo)準(zhǔn)
85、化的代碼編寫習(xí)慣通過這次編程我們深深的感受到對代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯,也有助于不同人員之間的協(xié)作。③我們還要有模塊化思維能力,模塊化思維就是編程任何一個功能模塊或函數(shù)的時候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡單思路上,想想看該模塊是否可以脫離這個系統(tǒng)存在,是否可以通過簡單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就
86、能極大避免重復(fù)性的開發(fā)工作。</p><p><b> 5.2 個人體會</b></p><p> ?、?通過本次的C語言課程設(shè)計,對C語言 有了更深入的了解,本來對C語言一些函數(shù)、循環(huán)和結(jié)構(gòu)變量不是很清楚,運用起來常常出錯。但是如今通過2周的C語言程序設(shè)計,已經(jīng)可以熟練正確地運用各類函數(shù)、循環(huán)變量、結(jié)構(gòu)化的程序設(shè)計以及指針。</p><p>
87、; ?、?了解到模塊在C語言中運用方式及技巧,為編寫一些比較復(fù)雜的語句及結(jié)構(gòu)奠定了基礎(chǔ)。</p><p> ?、?在編寫程序過程中,發(fā)現(xiàn)這確實是有一定難度的,必須對整個設(shè)計要求有很好得了解,才能在編寫中避免錯誤的產(chǎn)生。而且在編寫時一定要仔細認真地對待每個程序塊,尤其要搞清楚指針的指向。</p><p> ?、?由于知識的局限性,對一些錯誤不能正確的將它改正。通過老師及同學(xué)才將錯誤改正完畢。
88、</p><p> ?、?經(jīng)過這次課程設(shè)計,我發(fā)現(xiàn)自己存在很多不足之處,我將會在以后的學(xué)習(xí)中把它們改正過來,努力將C語言學(xué)得更好。</p><p><b> 6. 致 謝</b></p><p> 首先感謝學(xué)校為我們提供了這么好的一個學(xué)習(xí)、提升能力的機會以及如此好的上機環(huán)境。然后感謝這兩周內(nèi)陪我們一路走來的各位指導(dǎo)老師,在這么炎熱的天氣里為
89、我們做指導(dǎo)。尤其是向xx老師,感謝您對我們的嚴格要求,并為我們整理了這么完整的《C語言課程設(shè)計指導(dǎo)書》以及《課程設(shè)計報告要求》。同時也感謝同學(xué)在編寫課程中對我的幫助,為我指出不足,讓我的程序更加羽翼豐滿。</p><p><b> 7.參考文獻</b></p><p> ?、?王旭等編著.C語言實用界面技術(shù).陜西:西北工業(yè)大學(xué)出版社,1996</p>
90、<p> ?、?何欽銘 顏暉主編.C語言程序設(shè)計. 高等教育出版社,2008</p><p> ?、?顏暉主編.C語言程序設(shè)計實驗指導(dǎo).高等教育出版社,2008</p><p><b> 程序源代碼</b></p><p> #include <stdlib.h> </p><p>
91、#include <stdio.h> </p><p> #include <conio.h></p><p> #include <time.h></p><p> void welcome();</p><p> void time();</p><p> void
92、 SelectSort(int R[ ],int n);</p><p> void InsertSort(int R[ ],int n); </p><p> void PopSort(int R[ ],int n); </p><p> void main( ) //主函數(shù)</p><p><b>
93、; { </b></p><p> system("color 2f");</p><p> welcome();</p><p> int i,k,a,b,c,R[100000],n;</p><p> int *p=NULL;</p><p><b> FILE
94、*fp;</b></p><p> srand( (unsigned)time( NULL ) ); </p><p> for( i = 0; i <100000;i++ ) </p><p><b> { </b></p><p> a=rand()%10000; </p>&
95、lt;p><b> b=a*10;</b></p><p> c=rand()%10;</p><p><b> k=b+c;</b></p><p><b> R[i]=k;</b></p><p><b> }</b></p>
96、;<p><b> n=100000;</b></p><p> if((fp=fopen("BeforeSort.txt","w")) == NULL) </p><p><b> {</b></p><p> printf("error&q
97、uot;); </p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><
98、;p> fprintf(fp,"%d ",R[i]); </p><p><b> }</b></p><p> if(fclose(fp))</p><p><b> {</b></p><p> printf("Can n
99、ot close the file"); </p><p><b> exit(0);</b></p><p><b> }</b></p><p> printf("Reslut:\n\n\n");</p><p> p=(int*)malloc(
100、sizeof(int)*100000); </p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> p[i]=R[i];</p><p><b> } </b></p><p> SelectSort(p,
101、n);</p><p><b> //選擇排序</b></p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> p[i]=R[i];</p><p><b> }</b></p&g
102、t;<p> InsertSort(p,n);</p><p><b> //插入排序</b></p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> p[i]=R[i];</p><p>&l
103、t;b> }</b></p><p> PopSort(p,n);</p><p><b> //冒泡排序</b></p><p><b> getch();</b></p><p><b> }</b></p><p>
104、void SelectSort(int R[ ],int n) /*選擇排序*/ </p><p><b> { </b></p><p> int i,k,index,temp;</p><p> double count1=0.0,cpt1=0.0; </p><p><b> FIL
105、E*fp;</b></p><p> clock_t start;</p><p> clock_t end;</p><p> double time1;</p><p> start=clock(); </p><p> for(k=0;k<n-1;k++)</p>
106、<p><b> {</b></p><p><b> index=k;</b></p><p> for(i=k+1;i<n;i++)</p><p><b> { </b></p><p><b> cpt1++;</b>&l
107、t;/p><p> if(R[i]<R[index])</p><p><b> { </b></p><p><b> index=i;</b></p><p><b> }</b></p><p><b> }</b&g
108、t;</p><p> if(index!=k)</p><p><b> {</b></p><p><b> count1++;</b></p><p> temp=R[index];</p><p> R[index]=R[k];</p><
109、;p> R[k]=temp;</p><p><b> }</b></p><p><b> }</b></p><p> if((fp=fopen("SelectSort.txt","w")) == NULL)</p><p><b>
110、; {</b></p><p> printf("error");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<n;i++)</p><p>&
111、lt;b> {</b></p><p> fprintf(fp,"%d ",R[i]);</p><p><b> }</b></p><p> if(fclose(fp))</p><p><b> {</b></p><p&g
112、t; printf("Can not close the file");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> end=clock();</p><p> time1=(double)(end-sta
113、rt)/CLOCKS_PER_SEC; </p><p> printf("====================================\n");</p><p> printf("SelectSort:\n");</p><p> printf("Select Sort Spend %.2
114、lf seconds\n",time1);</p><p> printf("Select Sort Compare %.0lf times\n",cpt1);</p><p> printf("Select Sort Swap %.0lf times\n",count1);</p><p> print
115、f("\n\n");</p><p><b> }</b></p><p> void InsertSort(int R[],int n) /*插入排序*/</p><p><b> {</b></p><p> int i,j,temp;</p>
116、<p> double count2=0,cpt2=0,cpt3=0; </p><p><b> FILE*fp;</b></p><p> clock_t start;</p><p> clock_t end;</p><p> double time2;</p><
117、;p> start=clock(); </p><p> for(i=1;i<n;i++)</p><p><b> {</b></p><p> temp=R[i];</p><p> for(j=i-1;j>=0;j--) </p><p><b
118、> { </b></p><p><b> cpt2++;</b></p><p> if(temp>=R[j])</p><p><b> break;</b></p><p> R[j+1]=R[j];</p><p><b&
119、gt; }</b></p><p> R[j+1]=temp;</p><p> if(j+1==i-1)</p><p><b> count2++;</b></p><p> else count2=count2+0;</p><p><b> }</b
120、></p><p> if((fp=fopen("InsertSort.txt","w")) == NULL)</p><p><b> {</b></p><p> printf("error");</p><p><b> exit(
121、0);</b></p><p><b> }</b></p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> fprintf(fp,"%d ",R[i]);</p><p>&
122、lt;b> }</b></p><p> if(fclose(fp))</p><p><b> {</b></p><p> printf("Can not close the file");</p><p><b> exit(0);</b><
123、;/p><p><b> }</b></p><p> end=clock();</p><p> time2=(double)(end-start)/CLOCKS_PER_SEC; </p><p> printf("===================================\n&
124、quot;);</p><p> printf("InsertSort:\n");</p><p> printf("Insert Sort Spend %.2lf seconds\n",time2); </p><p> printf("Insert Sort Compare %.0lf times\n&
125、quot;,cpt2);</p><p> printf("Insert Sort Swap %.0lf times\n",count2);</p><p> printf("\n\n");</p><p><b> }</b></p><p> void PopSo
126、rt(int R[ ],int n) /*冒泡排序*/</p><p><b> { </b></p><p> int i,j,t;</p><p> double count3=0.0, cpt4=0.0; </p><p><b> FILE*fp;</b></p&g
127、t;<p> clock_t start;</p><p> clock_t end;</p><p> double time3;</p><p> start=clock(); </p><p> for(i=1;i<n;i++)</p><p><b> {
128、 </b></p><p> for(j=0;j<n-i;j++)</p><p><b> { </b></p><p> if(R[j]>R[j+1])</p><p><b> {</b></p><p><b> count
129、3++;</b></p><p><b> t=R[j];</b></p><p> R[j]=R[j+1];</p><p><b> R[j+1]=t;</b></p><p><b> }</b></p><p><b&g
130、t; cpt4++;</b></p><p><b> }</b></p><p><b> }</b></p><p> if((fp =fopen("Popsort.txt","w"))== NULL)</p><p><b>
131、; {</b></p><p> printf("error");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<n;i++)</p><p>&
132、lt;b> {</b></p><p> fprintf(fp,"%d ",R[i]);</p><p><b> }</b></p><p> if(fclose(fp))</p><p><b> {</b></p><p&g
133、t; printf("Can not close the file");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> end=clock();</p><p> time3=(double)(end-sta
134、rt)/CLOCKS_PER_SEC; </p><p> printf("====================================\n");</p><p> printf("PopSort:\n");</p><p> printf("pop Sort Spend %.2lf se
135、conds\n",time3);</p><p> printf("pop Sort Compare %.0lf times\n",cpt4);</p><p> printf("pop Sort Swap %.0lf times\n",count3);</p><p> printf("\n\
136、n");</p><p><b> } </b></p><p> void welcome()</p><p><b> {</b></p><p> printf("\n");</p><p> printf("\n&q
137、uot;);</p><p> printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━┓\n"); </p><p> printf(" ┃ 各種排序算法比較 ┃\n"); </p><p> printf(" ┃---
138、------------------------------------------------------------------┃ \n"); </p><p> printf(" ┃ (c)All Right Reserved wyy ┃\n"); </p><p> printf("
139、 ┃ wcnumberond@163.com ┃\n"); </p><p> printf(" ┃ version 2009 ┃\n"); </p><p> printf(" ┗━━━━━━━━━━━━━
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單獨實現(xiàn)各種排序 課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)各種排序算法的課程設(shè)計實驗報告
- 課程設(shè)計報告----內(nèi)排序算法比較
- visual_c++課程設(shè)計報告--超市管理系統(tǒng)
- visual c++超市管理系統(tǒng)課程設(shè)計報告
- 課程設(shè)計報告---排序算法的實現(xiàn)與比較
- 課程設(shè)計-排序算法比較
- 內(nèi)部排序課程設(shè)計---內(nèi)部排序算法的比較
- 數(shù)字排序的設(shè)計與實現(xiàn)c語言課程設(shè)計報告
- c歸并排序與堆排序的課程設(shè)計
- visual_foxpro課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---各種內(nèi)排序性能比較
- 拓撲排序課程設(shè)計報告
- 課程設(shè)計報告通用排序
- 課程設(shè)計---設(shè)計排序典型算法(冒泡與快速排序)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---幾種排序算法的演示
- 拓撲排序課程設(shè)計--拓撲排序算法的研究與實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--排序算法
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告---排序算法的實現(xiàn)與比較
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--內(nèi)部排序算法的性能分析
評論
0/150
提交評論