2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論