版權(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è)計的排序算法進行排序。這些排序算法中包括冒泡法、選擇法、插入法,也可以適當選擇其他算法,但必須是較為典型的排序算法。</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> ⑴在“Before.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]中恰當?shù)闹担琣[9]中放的自然
44、是最小的數(shù)。如定位a[0],先假定a[0]中當前值是最大數(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]開始,當比到a[8]以后,排序就完成了。&l
45、t;/p><p> 2.2.2 插入排序</p><p> 每次將一個待排序的數(shù)據(jù)元素,插入到前面已經(jīng)排好序的數(shù)列中的適當位置,使數(shù)列依然有序,直到待排序數(shù)據(jù)元素全部插入完為止。即經(jīng)過i-1遍處后,L[1..i-1]己排好序。第i遍處理僅將L插入L[1..i-1]的適當位置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為測試歡迎“登陸”界面,當按“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è)計的不太科學,而且有些在C語言課程設(shè)計指導(dǎo)書上的任務(wù)要求沒有很好得運行出來。</p><p> ?、仆瑫r在這次課程設(shè)計中讓我們認識到做程序設(shè)計這項工作中我門要具備以下素質(zhì):① 良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),缺乏文檔,一個軟件系統(tǒng)就缺乏生命力,在未來的查錯,升級以及模塊的復(fù)用時就都會遇到極大的麻煩。② 此外編程是一項高精度的工作所以我們要有規(guī)范化,標準
85、化的代碼編寫習慣通過這次編程我們深深的感受到對代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習慣,不但有助于代碼的移植和糾錯,也有助于不同人員之間的協(xié)作。③我們還要有模塊化思維能力,模塊化思維就是編程任何一個功能模塊或函數(shù)的時候,要多想一些,不要局限在完成當前任務(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> ?、?由于知識的局限性,對一些錯誤不能正確的將它改正。通過老師及同學才將錯誤改正完畢。
88、</p><p> ⑸ 經(jīng)過這次課程設(shè)計,我發(fā)現(xiàn)自己存在很多不足之處,我將會在以后的學習中把它們改正過來,努力將C語言學得更好。</p><p><b> 6. 致 謝</b></p><p> 首先感謝學校為我們提供了這么好的一個學習、提升能力的機會以及如此好的上機環(huán)境。然后感謝這兩周內(nèi)陪我們一路走來的各位指導(dǎo)老師,在這么炎熱的天氣里為
89、我們做指導(dǎo)。尤其是向xx老師,感謝您對我們的嚴格要求,并為我們整理了這么完整的《C語言課程設(shè)計指導(dǎo)書》以及《課程設(shè)計報告要求》。同時也感謝同學在編寫課程中對我的幫助,為我指出不足,讓我的程序更加羽翼豐滿。</p><p><b> 7.參考文獻</b></p><p> ?、?王旭等編著.C語言實用界面技術(shù).陜西:西北工業(yè)大學出版社,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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單獨實現(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
提交評論