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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  信息科學(xué)與技術(shù)學(xué)院</b></p><p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告</p><p><b>  完成日期:1111</b></p><p>  目 錄</p><p>  1 課程設(shè)計(jì)的目的4</p><p>  1.1

2、 課程設(shè)計(jì)的目的4</p><p>  1.2 課程設(shè)計(jì)的題目4</p><p>  1.3 題目要求4</p><p><b>  2 概要設(shè)計(jì)5</b></p><p>  2.1 存儲(chǔ)結(jié)構(gòu)5</p><p>  2.2 基本操作5</p><p>

3、;<b>  3 詳細(xì)設(shè)計(jì)6</b></p><p>  3.1 流程圖6</p><p>  3.2 源程序12</p><p><b>  4 測(cè)試22</b></p><p>  4. 1 主菜單22</p><p>  4. 2 插入排序功能22&

4、lt;/p><p>  4.3 選擇排序功能23</p><p>  4.4 冒泡排序功能23</p><p>  4.5 快速排序功能24</p><p>  4.6 合并排序功能24</p><p>  4.7 5種排序方法比較25</p><p>  5 課程設(shè)計(jì)總結(jié)26<

5、;/p><p><b>  6參考書目:26</b></p><p>  1 課程設(shè)計(jì)的目的</p><p>  1.1 課程設(shè)計(jì)的目的</p><p>  數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中所出現(xiàn)的計(jì)算機(jī)操作對(duì)象以及它們之間的關(guān)系和操作的學(xué)科。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)軟件和計(jì)算機(jī)硬件之間的一門計(jì)算機(jī)專

6、業(yè)的核心課程,它是計(jì)算機(jī)程序設(shè)計(jì)、數(shù)據(jù)庫(kù)、操作系統(tǒng)、編譯原理及人工智能等的重要基礎(chǔ),廣泛的應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域。</p><p>  學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了將實(shí)際問題中所涉及的對(duì)象在計(jì)算機(jī)中表示出來(lái)并對(duì)它們進(jìn)行處理。通過課程設(shè)計(jì)可以提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。通過此次課程設(shè)計(jì)主要達(dá)到以下目的:</p><p>  了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,

7、掌握數(shù)組、鏈表、隊(duì)列、堆棧、樹等基本數(shù)據(jù)結(jié)構(gòu),具備初步的獨(dú)立分析和設(shè)計(jì)能力;</p><p>  初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;</p><p>  提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;</p><p>  訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。

8、</p><p>  1.2 課程設(shè)計(jì)的題目</p><p>  排序綜合,利用隨機(jī)函數(shù)產(chǎn)生N個(gè)隨機(jī)整數(shù)(20000以上),對(duì)這些數(shù)進(jìn)行多種方法進(jìn)行排序。 </p><p><b>  1.3 題目要求</b></p><p><b>  要求:</b></p><p>

9、  至少采用三種方法實(shí)現(xiàn)上述問題求解(提示,可采用的方法有插入排序、希爾排序、起泡排序、快速排序、選擇排序、堆排序、歸并排序)。并把排序后的結(jié)果保存在不同的文件中。</p><p>  統(tǒng)計(jì)每一種排序方法的性能(以上機(jī)運(yùn)行程序所花費(fèi)的時(shí)間為準(zhǔn)進(jìn)行對(duì)比),找出其中兩種較快的方法。</p><p>  如果采用4種或4種以上的方法者,可適當(dāng)加分。</p><p><

10、;b>  2 概要設(shè)計(jì)</b></p><p><b>  2.1 存儲(chǔ)結(jié)構(gòu)</b></p><p><b>  定義的主要的數(shù)據(jù):</b></p><p>  (1):class SortableSList</p><p><b>  {</b><

11、/p><p><b>  public:</b></p><p>  SortableSList();</p><p>  void InsertSort();</p><p>  void SelectSort();</p><p>  void BubbleSort();</p>&

12、lt;p>  void QuickSort();</p><p>  void MergeSort();</p><p>  void QuickSort(int left,int right);</p><p>  int QSort(int left,int right);</p><p>  void Merge(int lef

13、t,int right1,int right2);</p><p>  int *I,*S,*Q,*B,*M;</p><p><b>  int n;</b></p><p>  };聲明的類對(duì)象d;</p><p>  :int a[5],b[5],c[5], 分別記錄比較次數(shù),交換次數(shù),移動(dòng)次數(shù);</p&g

14、t;<p>  :long int a1[5]; //記錄排序所用的時(shí)間</p><p>  int a2[5]; //記錄排名</p><p><b>  2.2 基本操作</b></p><p>  (1):void SortableSList::BubbleSort(); 冒泡排序:</p><

15、;p>  (2):void SortableSList::InsertSort(); 直接插入排序</p><p>  (3):void SortableSList::MergeSort(); 合并排序 </p><p>  (4):void SortableSList::QuickSort(); 快速排序</p><p>  (5):void S

16、ortableSList::SelectSort(); 簡(jiǎn)單選擇排序</p><p><b>  3 詳細(xì)設(shè)計(jì)</b></p><p><b>  3.1 流程圖</b></p><p><b>  主流程圖:</b></p><p><b>  P= =0&

17、lt;/b></p><p>  P==1 p==2 p==3 p==4 p==5 P==6 </p><p><b>  流程圖-1</b></p><p><b>  子流程圖:</b></p><p><

18、b>  (1):插入排序:</b></p><p><b>  否</b></p><p><b>  是</b></p><p>  是 否</p><p><b>  流程圖-2 </b></p><p> 

19、 (2):選擇排序: </p><p><b>  是</b></p><p><b>  否</b></p><p>  是

20、 否</p><p><b>  流程圖-3</b></p><p><b>  (3):冒泡排序:</b></p><p><b>  是</b></p><p>  是

21、 否</p><p><b>  否</b></p><p><b>  是</b></p><p><b>  流程圖-4</b></p><p><b>  :快速排序:</b></p><p><b>  是&l

22、t;/b></p><p><b>  否</b></p><p><b>  流程圖-5</b></p><p><b>  :合并排序: </b></p><p><b>  是</b></p><p>  否

23、 否</p><p>  是 </p><p><b>  否 </b></p><p>  是 否</p><p><b>  流程圖-6</b></p><p&

24、gt;<b>  3.2 源程序</b></p><p>  #include<iostream></p><p>  #include <stdio.h></p><p>  #include<fstream></p><p>  #include<stdlib.h>&

25、lt;/p><p>  #include<windows.h></p><p>  #include<iomanip>//包含列表的函數(shù)</p><p>  using namespace std;</p><p>  int a[5],b[5],c[5];//a[],b[],c[]分別記錄比較次數(shù),交換次數(shù),移動(dòng)次數(shù)&l

26、t;/p><p>  ifstream outfile;</p><p>  class SortableSList</p><p><b>  {</b></p><p><b>  public:</b></p><p>  SortableSList();</p>

27、;<p>  void InsertSort();</p><p>  void SelectSort();</p><p>  void BubbleSort();</p><p>  void QuickSort();</p><p>  void MergeSort();</p><p>  voi

28、d QuickSort(int left,int right);</p><p>  int QSort(int left,int right);</p><p>  void Merge(int left,int right1,int right2);</p><p>  int *I,*S,*Q,*B,*M;</p><p><

29、b>  int n;</b></p><p><b>  };</b></p><p>  SortableSList::SortableSList()</p><p><b>  {</b></p><p>  printf( " 輸入排序數(shù)字的個(gè)數(shù):\n")

30、;</p><p>  scanf("%d",&n);</p><p>  I=new int[n]; //創(chuàng)建一個(gè)指向整型數(shù)據(jù)的數(shù)組,并將地址賦給指向整型數(shù)據(jù)的指針</p><p>  S=new int[n];</p><p>  Q=new int[n];</p><p>  B=

31、new int[n];</p><p>  M=new int[n];</p><p>  for(int i=0;i<n;i++)</p><p>  I[i]=S[i]=Q[i]=B[i]=M[i]=rand();</p><p>  //將隨機(jī)生成的資料寫入文件</p><p>  ofstream inf

32、ile;</p><p>  infile.open("data.txt");//將對(duì)象與文件關(guān)聯(lián)</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  double w=I[i];</p><p>  infi

33、le<<w<<" "; }</p><p>  infile.close();</p><p><b>  }</b></p><p>  void Swap(int&a,int&b)//交換函數(shù)</p><p><b>  {</b>&

34、lt;/p><p>  int T=a;a=b;b=T;</p><p><b>  }</b></p><p>  void SortableSList::InsertSort()//直接插入排序</p><p><b>  { </b></p><p>  for(int i

35、=1;i<n;i++)</p><p><b>  {</b></p><p><b>  int j=i;</b></p><p>  int temp=I[i];//將待插入元素存入temp</p><p><b>  c[0]++;</b></p>&

36、lt;p>  while(j>0&&temp<I[j-1]){//從后往前查找插入位置</p><p><b>  a[0]++;</b></p><p>  I[j]=I[j-1];j--;</p><p><b>  c[0]++;</b></p><p>&l

37、t;b>  }</b></p><p><b>  a[0]++;</b></p><p>  I[j]=temp;//將待插入的元素存入找到的插入位置</p><p><b>  }</b></p><p><b>  }</b></p>&l

38、t;p>  void SortableSList::SelectSort()//簡(jiǎn)單選擇排序</p><p><b>  {</b></p><p><b>  int s;</b></p><p>  for(int i=0;i<n-1;i++){</p><p>  s=i;

39、 //假定待排序序列中的第一個(gè)元素最小</p><p>  for(int j=i+1;j<n;j++)//每趟掃描n-i-1次</p><p><b>  a[1]++;</b></p><p>  if(S[j]<S[s]) s=j;//記下每次比較的較小元素的下標(biāo)</p><p>

40、;  Swap(S[i],S[s]);//最小元素與待排序序列的第一個(gè)交換</p><p>  c[1]=c[1]+3,b[1]++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void SortableSList::QuickSort()/

41、/快速排序</p><p><b>  { </b></p><p>  QuickSort(0,n-1); //以初始序列為待排序序列開始快速排序</p><p><b>  }</b></p><p>  int SortableSList::QSort(int left,

42、int right)</p><p><b>  {</b></p><p>  int i=left,j=right+1;</p><p>  do{ //開始一趟快速排序,Q[left]作為分割元素</p><p><b>  do </b>

43、</p><p><b>  {</b></p><p><b>  i++;</b></p><p><b>  a[3]++;</b></p><p>  }while(Q[i]<Q[left]);</p><p><b>  do&

44、lt;/b></p><p><b>  {</b></p><p><b>  j--;</b></p><p><b>  a[3]++;</b></p><p>  }while(Q[j]>Q[left]);</p><p><b

45、>  if(i<j)</b></p><p>  Swap(Q[i],Q[j]),b[3]++;</p><p>  }while(i<j);</p><p>  Swap(Q[left],Q[j]); //交換分割元素Q[left]和Q[j]的位置</p><p>  c[3]=c[3]+3,b[

46、3]++;</p><p><b>  return j;</b></p><p><b>  }</b></p><p>  void SortableSList::QuickSort(int left,int right)</p><p><b>  {</b></p

47、><p>  if(left<right){</p><p>  int j=QSort(left,right);</p><p>  QuickSort(left,j-1); //對(duì)低端序列快速排序</p><p>  QuickSort(j+1,right); //對(duì)高端序列快速排序</p><p>

48、<b>  }</b></p><p><b>  }</b></p><p>  void SortableSList::BubbleSort()//冒泡排序</p><p><b>  {</b></p><p>  int i,j,last;</p><

49、;p><b>  i=n-1;</b></p><p>  while(i>0)</p><p>  { //最多進(jìn)行n-1趟</p><p>  last=0; //進(jìn)入循環(huán)就將last置為0 </p><p>  for(j=0;j<i;j++)//從上往下進(jìn)行比較</p&g

50、t;<p><b>  {</b></p><p>  if(B[j+1]<B[j])</p><p><b>  {</b></p><p>  Swap(B[j],B[j+1]);</p><p>  c[2]=c[2]+3;</p><p><

51、b>  b[2]++;</b></p><p><b>  last=j;</b></p><p><b>  }</b></p><p><b>  a[2]++;</b></p><p><b>  }</b></p>

52、<p>  i=last; //如果沒有交換元素,則last=0,退出循環(huán)</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //兩路合并排序</b></p><p>  void Sortable

53、SList::Merge(int left,int right1,int right2)//兩路合并</p><p><b>  {</b></p><p>  //right1,right2分別為兩個(gè)子序列的上界</p><p>  int*temp=new int[right2-left+1]; //創(chuàng)建存放兩個(gè)子序列的臨時(shí)數(shù)組</p

54、><p>  int i=left,j=right1+1,k=0; //i,j是兩個(gè)子序列的游動(dòng)指針,k是temp的游動(dòng)指針</p><p>  while((i<=right1)&&(j<=right2))//若兩個(gè)子序都不空,則循環(huán)</p><p><b>  {</b></p><p&

55、gt;<b>  a[4]++;</b></p><p>  if(M[i]<=M[j]) //將M[i],M[j]中較小的存入temp[k]</p><p>  temp[k++]=M[i++],b[4]++;</p><p><b>  else</b></p><

56、;p>  temp[k++]=M[j++],c[4]++,b[4]++;</p><p><b>  }</b></p><p>  while(i<=right1) //若第一個(gè)子序列還有剩余的就存入temp</p><p>  temp[k++]=M[i++],c[4]++,b[4]++;</

57、p><p>  while(j<=right2) //若第二個(gè)子序列還有剩余的就存入temp</p><p>  temp[k++]=M[j++],c[4]++,b[4]++;</p><p>  for(i=0,k=left;k<=right2;) //將temp中的元素放回</p><p>  M[k

58、++]=temp[i++],c[4]++,b[4]++;</p><p><b>  }</b></p><p>  void SortableSList::MergeSort()//合并排序</p><p><b>  {</b></p><p>  int left,right2,right1;

59、</p><p>  int size=1; //初始化子序列中元素的個(gè)數(shù)為1</p><p>  while(size<n){</p><p><b>  left=0;</b></p><p>  while(left+size<n) //若成立,則需兩兩合并</p>

60、<p><b>  {</b></p><p>  right1=left+size-1; //確定子序列1的下界</p><p>  if(right1+size>n-1)</p><p>  right2=n-1;</p><p><b>  else</b></p&g

61、t;<p>  right2=right1+size;</p><p>  Merge(left,right1,right2); //合并相鄰的兩個(gè)子序列</p><p>  left=right2+1; //確定下次合并的子序列的下界</p><p><b>  }</b></p><p>  si

62、ze*=2;//元素個(gè)數(shù)擴(kuò)大一倍</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Wrong()//錯(cuò)誤輸出</p><p><b>  {</b></p><p>  printf(&quo

63、t;\n*****按鍵錯(cuò)誤!請(qǐng)重新輸入*****\n");</p><p>  getchar();//從標(biāo)準(zhǔn)輸入獲取字符并返回下一個(gè)字符</p><p><b>  }</b></p><p>  void menu()</p><p><b>  {</b></p>&l

64、t;p>  printf( " \n");</p><p>  printf( " ***************************尊敬的用戶您好*************************** \n");&

65、lt;/p><p>  printf( " \n");</p><p>  printf( " ****歡迎使用由計(jì)科1班 喻思遠(yuǎn) 2011508025 編輯的綜合排序系統(tǒng)!**** \n");</p

66、><p>  printf( " \n");</p><p>  printf( "

67、 \n");</p><p>  printf( " 現(xiàn)在請(qǐng)您做出以下選擇 \n");</p><p>  printf( "

68、 \n");</p><p>  printf( " \n");</p><p>  printf( " ************************************

69、********************************* \n");</p><p>  printf( " \n");</p><p>  printf( " ******

70、******** 1:插入排序 ***********\n");</p><p>  printf( " ************** 2:選擇排序 ***********\n");</p><p>  printf( " ************** 3:冒泡排序

71、***********\n");</p><p>  printf( " ************** 4:快速排序 ***********\n");</p><p>  printf( " ************** 5:合并排序 ***********\n");&

72、lt;/p><p>  printf( " ************** 6:時(shí)間效率比較 ***********\n");</p><p>  printf( " ************** 0:退出 ***********\n");</p><p>  

73、printf( " \n");</p><p>  printf( " ******************************************************************** \n");<

74、;/p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  int i,p;</b></p><p>  for(i=0;i<5;i++)</p>

75、<p><b>  {</b></p><p>  a[i]=b[i]=c[i]=0;</p><p><b>  }</b></p><p>  long int a1[5]; //排序所用的時(shí)間</p><p>  int a2[5]; //排名</p>&l

76、t;p>  long int start,finish;</p><p>  printf( " ***************************尊敬的用戶您好*************************** \n");</p><p>  printf( "

77、 \n\\n");</p><p>  printf( " ****歡迎使用由計(jì)科1班 喻思遠(yuǎn) 2011508025 編輯的綜合排序系統(tǒng)!**** \n\n\n");</p><p>  printf( " 首先請(qǐng)您輸出要

78、比較數(shù)的個(gè)數(shù) \n\n\n");</p><p>  SortableSList d;</p><p>  //循環(huán)執(zhí)行,直到按0退出</p><p><b>  while(1)</b></p><p><b>  {</b></p>

79、<p>  system("cls");</p><p>  menu();//顯示選擇界面</p><p>  scanf("%d",&p); //等待輸入</p><p><b>  //輸入0退出</b></p><p><b>  if(p

80、==0)</b></p><p><b>  {</b></p><p>  printf(" ************************謝謝!歡迎下次使用*************************!\n");</p><p>  getchar();</p><p>&

81、lt;b>  break;</b></p><p><b>  }</b></p><p>  //判斷輸入值,選擇相應(yīng)的操作</p><p><b>  switch(p)</b></p><p><b>  {</b></p><p&g

82、t;  case 1:outfile.open("data.txt");//將對(duì)象與文件關(guān)聯(lián)</p><p>  for(i=0;i<d.n;i++)</p><p><b>  {</b></p><p><b>  double w;</b></p><p>  ou

83、tfile>>w;</p><p><b>  d.I[i]=w;</b></p><p><b>  }</b></p><p>  outfile.close();</p><p>  start=GetTickCount();</p><p>  d.Ins

84、ertSort();</p><p>  finish=GetTickCount();</p><p>  a1[0]=finish-start;</p><p>  printf("|排序名稱|比較次數(shù)|交換的次數(shù)|移動(dòng)次數(shù)|時(shí) 間|時(shí)間復(fù)雜度\n");</p><p>  printf("|插入排序|%8

85、d|%10d|%8d|%ld毫秒|n*n\n",a[0],b[0],c[0],a1[0]);</p><p>  printf("\n請(qǐng)按任意鍵繼續(xù)...");getchar();getchar();break;</p><p>  case 2: outfile.open("data.txt");//將對(duì)象與文件關(guān)聯(lián)</p>

86、<p>  for(i=0;i<d.n;i++)</p><p><b>  {</b></p><p><b>  double w;</b></p><p>  outfile>>w;</p><p><b>  d.S[i]=w;</b>&

87、lt;/p><p><b>  }</b></p><p>  start=GetTickCount();</p><p>  d.SelectSort ();</p><p>  finish=GetTickCount();</p><p>  a1[1]=finish-start;</p&g

88、t;<p>  printf("|排序名稱|比較次數(shù)|交換的次數(shù)|移動(dòng)次數(shù)|時(shí) 間|時(shí)間復(fù)雜度\n");</p><p>  printf("|選擇排序|%8d|%10d|%8d|%ld毫秒|n*n\n",a[1],b[1],c[1],a1[1]);</p><p>  printf("\n請(qǐng)按任意鍵繼續(xù)..."

89、);getchar();getchar();break;</p><p>  case 3: outfile.open("data.txt");//將對(duì)象與文件關(guān)聯(lián)</p><p>  for(i=0;i<d.n;i++)</p><p><b>  {</b></p><p><b&g

90、t;  double w;</b></p><p>  outfile>>w;</p><p><b>  d.B[i]=w;</b></p><p><b>  }</b></p><p>  start=GetTickCount();</p><p&g

91、t;  d.BubbleSort ();</p><p>  finish=GetTickCount();</p><p>  a1[2]=finish-start;</p><p>  printf("|排序名稱|比較次數(shù)|交換的次數(shù)|移動(dòng)次數(shù)|時(shí) 間|時(shí)間復(fù)雜度\n");</p><p>  printf(&quo

92、t;|冒泡排序|%8d|%10d|%8d|%ld毫秒|n*n\n",a[2],b[2],c[2],a1[2]);</p><p>  printf("\n請(qǐng)按任意鍵繼續(xù)...");getchar();getchar();break;</p><p>  case 4: outfile.open("data.txt");//將對(duì)象與文件關(guān)聯(lián)

93、</p><p>  for(i=0;i<d.n;i++)</p><p><b>  {</b></p><p><b>  double w;</b></p><p>  outfile>>w;</p><p><b>  d.Q[i]=w;&

94、lt;/b></p><p><b>  }</b></p><p>  start=GetTickCount();</p><p>  d.QuickSort();</p><p>  finish=GetTickCount();</p><p>  a1[3]=finish-start;

95、</p><p>  printf("|排序名稱|比較次數(shù)|交換的次數(shù)|移動(dòng)次數(shù)|時(shí) 間|時(shí)間復(fù)雜度\n");</p><p>  printf("|快速排序|%8d|%10d|%8d|%ld毫秒|n*log2n\n",a[3],b[3],c[3],a1[3]);</p><p>  printf("\n請(qǐng)按任意

96、鍵繼續(xù)...");getchar();getchar();break;</p><p>  case 5: outfile.open("data.txt");//將對(duì)象與文件關(guān)聯(lián)</p><p>  for(i=0;i<d.n;i++)</p><p><b>  {</b></p><

97、p><b>  double w;</b></p><p>  outfile>>w;</p><p><b>  d.M[i]=w;</b></p><p><b>  }</b></p><p>  start=GetTickCount();</p&

98、gt;<p>  d.MergeSort();</p><p>  finish=GetTickCount();</p><p>  a1[4]=finish-start;</p><p>  printf("|排序名稱|比較次數(shù)|交換的次數(shù)|移動(dòng)次數(shù)|時(shí) 間|時(shí)間復(fù)雜度\n");</p><p>  p

99、rintf("|合并排序|%8d|%10d|%8d|%ld毫秒|n*log2n\n",a[4],b[4],c[4],a1[4]);</p><p>  printf("\n請(qǐng)按任意鍵繼續(xù)...");getchar();getchar();break;</p><p><b>  case 6:</b></p>&l

100、t;p>  system("cls");</p><p>  outfile.open("data.txt");//將對(duì)象與文件關(guān)聯(lián)</p><p>  for(i=0;i<d.n;i++)</p><p><b>  {</b></p><p><b>  

101、double w;</b></p><p>  outfile>>w;</p><p>  d.I[i]=d.S[i]=d.Q[i]=d.B[i]=d.M[i]=w;</p><p><b>  }</b></p><p>  outfile.close();</p><p&g

102、t;  for(i=0;i<5;i++)</p><p><b>  { </b></p><p>  a[i]=b[i]=c[i]=0;}</p><p>  long int t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;</p><p>  t1=GetTickCount();//從系統(tǒng)啟動(dòng)到

103、現(xiàn)在所經(jīng)過的毫秒數(shù)</p><p>  d.InsertSort();</p><p>  t2=GetTickCount();</p><p>  t3=GetTickCount();</p><p>  d.SelectSort();</p><p>  t4=GetTickCount();</p>

104、<p>  t5=GetTickCount();</p><p>  d.BubbleSort();</p><p>  t6=GetTickCount();</p><p>  t7=GetTickCount();</p><p>  d.QuickSort();</p><p>  t8=GetTickC

105、ount();</p><p>  t9=GetTickCount();</p><p>  d.MergeSort();</p><p>  t10=GetTickCount();</p><p>  a1[0]=t2-t1;</p><p>  a1[1]=t4-t3;</p><p>  

106、a1[2]=t6-t5;</p><p>  a1[3]=t8-t7;</p><p>  a1[4]=t10-t9;</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p><p><b>  int t=1;</b>&l

107、t;/p><p>  for(int j=0;j<5;j++)</p><p><b>  {</b></p><p><b>  if(i!=j)</b></p><p>  if(a1[i]>a1[j])</p><p><b>  t++;</b

108、></p><p><b>  }</b></p><p><b>  a2[i]=t;</b></p><p><b>  }</b></p><p>  printf( "各種內(nèi)排序的性能比較\n");</p><p>  

109、printf( "| 排序名稱 |比較次數(shù)|交換的次數(shù)|移動(dòng)次數(shù)|時(shí) 間|時(shí)間排名|時(shí)間復(fù)雜度\n");</p><p>  printf( "| 插入排序 |%8d|%10d|%8d|%6ld毫秒|%6d|n*n\n",a[0],b[0],c[0],a1[0],a2[0]);</p><p>  printf( "| 選擇排序 |%8

110、d|%10d|%8d|%6ld毫秒|%6d|n*n\n",a[1],b[1],c[1],a1[1],a2[1]);</p><p>  printf( "| 冒泡排序 |%8d|%10d|%8d|%6ld毫秒|%6d|n*n\n",a[2],b[2],c[2],a1[2],a2[2]);</p><p>  printf( "| 快速排序 |%8d|

111、%10d|%8d|%6ld毫秒|%6d|n*log2n\n",a[3],b[3],c[3],a1[3],a2[3]);</p><p>  printf( "| 合并排序 |%8d|%10d|%8d|%6ld毫秒|%6d|n*log2n\n",a[4],b[4],c[4],a1[4],a2[4]);</p><p>  printf("\n請(qǐng)按任意鍵

112、繼續(xù)...");getchar();getchar();break;</p><p>  default:Wrong();</p><p>  getchar();</p><p><b>  break;</b></p><p><b>  }</b></p><p&

113、gt;<b>  }</b></p><p><b>  }</b></p><p><b>  4 測(cè)試</b></p><p><b>  4. 1主菜單</b></p><p><b>  圖—4.1</b></p>

114、;<p>  4. 2 插入排序功能</p><p><b>  圖—4.2</b></p><p><b>  4.3選擇排序功能</b></p><p><b>  圖—4.3</b></p><p>  4.4 冒泡排序功能</p><

115、p><b>  圖—4.4</b></p><p>  4.5快速排序功能:</p><p><b>  圖—4.5</b></p><p>  4.6合并排序功能:</p><p><b>  圖—4.6</b></p><p>  4.7 5

116、種排序方法比較</p><p><b>  圖—4.7 </b></p><p><b>  5 課程設(shè)計(jì)總結(jié)</b></p><p>  通過這次課程設(shè)計(jì),我收獲到很多, 平時(shí)的在做作業(yè)時(shí),因?yàn)轭}形與結(jié)構(gòu)都是很簡(jiǎn)單的,并且每一章的內(nèi)容都是有相應(yīng)的例題可以參考,所以在做題時(shí)沒有遇到過很麻煩的問題,而這次不同了,一個(gè)課題拿

117、到手時(shí),給我的感覺是較為復(fù)雜的,而且要求很多,使得題目要求更大了.</p><p>  本次課程設(shè)計(jì)我是將整個(gè)程序分塊完成的.將整個(gè)大的程序的實(shí)現(xiàn)分6個(gè)功能模塊,每個(gè)功能都通過一個(gè)相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn).在調(diào)試時(shí)分別進(jìn)行調(diào)試,使得調(diào)試更方便些,最后將程序整體進(jìn)行調(diào)試,在修改不妥之處。</p><p><b>  6參考書目:</b></p><p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論