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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課程設(shè)計(jì)題目:內(nèi)部排序演示</p><p>  1.問(wèn)題描述----------------------------------------------------1</p><p>  2.需求分析----------------------------------------------------1</p><p>  3.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)-

2、---------------------------------------------1</p><p>  4.算法設(shè)計(jì)-----------------------------------------------------1</p><p>  1)概要設(shè)計(jì)-------------------------------------------------1</p>

3、<p>  2)詳細(xì)設(shè)計(jì)-------------------------------------------------2</p><p>  5.測(cè)試分析-----------------------------------------------------7</p><p>  6.總結(jié)-------------------------------------------

4、----------------8</p><p>  7.參考文獻(xiàn)---------------------------------------------------9</p><p>  8.附錄:帶注釋的源程序-----------------------------------10</p><p>  1.問(wèn)題描述:隨著計(jì)算機(jī)技術(shù)的發(fā)展,各種排序算法不斷的

5、被提出。排序算法在計(jì)算機(jī)科學(xué)中有非常重要的意義,且應(yīng)用很廣泛。在以后的發(fā)展中排序?qū)ξ覀兊膶W(xué)習(xí)和生活的影響會(huì)逐漸增大,很有必要學(xué)習(xí)排序知識(shí)。此次課程設(shè)計(jì)就是運(yùn)用自己掌握排序的知識(shí),</p><p>  設(shè)計(jì)一個(gè)測(cè)試程序比較幾種排序算法的關(guān)鍵字比較次數(shù)和移動(dòng)次數(shù)以取得直觀感受。</p><p>  2.需求分析:(1)實(shí)現(xiàn)各種內(nèi)部排序。包括直接插入排序,希爾排序,冒泡排序,快速排序,直接選擇排

6、序,歸并排序,堆排序。</p><p>  (2)待排序的元素的關(guān)鍵字為整數(shù)或(字符)??捎秒S機(jī)數(shù)據(jù)和用戶輸入數(shù)據(jù)作測(cè)試比較。比較的指標(biāo)為有關(guān)鍵字參加的比較次數(shù)和關(guān)鍵字的移動(dòng)次數(shù)(關(guān)鍵字交換以3次計(jì))。</p><p>  (3)演示程序以人機(jī)對(duì)話的形式進(jìn)行。每次測(cè)試完畢顯示各種比較指標(biāo)值的列表,以便比較各種排序的優(yōu)劣。</p><p><b>  3.?dāng)?shù)

7、據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p>  struct count</p><p><b>  {</b></p><p>  int compare ;</p><p>  int move ;</p><p><b>  };</b></p>&

8、lt;p><b>  4.算法設(shè)計(jì)</b></p><p><b>  1)概要設(shè)計(jì)</b></p><p><b>  主程序:</b></p><p>  int main()</p><p><b>  {</b></p><

9、;p><b>  初始化;</b></p><p><b>  while()</b></p><p><b>  {</b></p><p><b>  接受命令;</b></p><p><b>  處理命令;</b><

10、;/p><p><b>  退出;</b></p><p><b> ?。?lt;/b></p><p><b>  2)詳細(xì)設(shè)計(jì)</b></p><p><b> ?。?)冒泡排序</b></p><p>  核心思想:設(shè)排序表中有n個(gè)數(shù)據(jù)

11、元素。首先對(duì)排序表中第一,二個(gè)數(shù)據(jù)元素的關(guān)鍵字array[0]和array[1]進(jìn)行比較。如果前者大于后者,則進(jìn)行交換;然后對(duì)第二,三個(gè)數(shù)據(jù)做同樣的處理;重復(fù)此過(guò)程直到處理完最后兩個(gè)相鄰的數(shù)據(jù)元素。我們稱之為一趟冒泡,它將關(guān)鍵字最大的元素移到排序表的最后一個(gè)位置,其他數(shù)據(jù)元素一般也都向排序的最終位置移動(dòng)。然后進(jìn)行第二趟排序,對(duì)排序表中前n-1個(gè)元素進(jìn)行與上述同樣的操作,其結(jié)果使整個(gè)排序表中關(guān)鍵字次大的數(shù)據(jù)元素被移到arr[n-2]的位置

12、。如此最多做n-1趟冒泡就能把所有數(shù)據(jù)元素排好序。</p><p>  核心代碼:int array_size=0;</p><p>  void BubleSort(int array[], int length)</p><p><b>  {</b></p><p>  BubleSortCount.compare

13、 = 0 ;</p><p>  BubleSortCount.move = 0 ;</p><p><b>  int tmp;</b></p><p>  for(int j = length; j>1; j--)</p><p>  for(int i =1;i<j; i++)</p>&

14、lt;p><b>  {</b></p><p>  BubleSortCount.compare++ ;</p><p>  if(array[i-1]>array[i])</p><p><b>  {</b></p><p>  tmp = array[i-1] ;</p&g

15、t;<p>  array[i-1] = array[i];</p><p>  array[i] = tmp ;</p><p>  BubleSortCount.move++ ;</p><p><b>  }</b></p><p><b>  }</b></p>

16、<p><b>  }</b></p><p><b> ?。?)直接插入排序</b></p><p>  開(kāi)始時(shí)把第一個(gè)數(shù)據(jù)元素作為初始的有序序列,然后從第二個(gè)數(shù)據(jù)元素開(kāi)始依次把數(shù)據(jù)元素按關(guān)鍵字大小插入到已排序的部分排序表的適當(dāng)位置。當(dāng)插入第i(1<i<=n)個(gè)數(shù)據(jù)元素時(shí),前面的i-1個(gè)數(shù)據(jù)元素已經(jīng)排好序,這時(shí),用第i個(gè)數(shù)

17、據(jù)元素的關(guān)鍵字與前面的i-1個(gè)數(shù)據(jù)元素的關(guān)鍵字順序進(jìn)行比較,找到插入位置后就將第i個(gè)數(shù)據(jù)元素插入。如此進(jìn)行n-1次插入,就完成了排序。</p><p>  核心代碼:void InsertSort(int array[], int length)</p><p><b>  {</b></p><p>  InsertSortCount.com

18、pare = 0 ;</p><p>  InsertSortCount.move = 0 ;</p><p><b>  int tmp ;</b></p><p>  for(int i=1; i<length; i++)</p><p>  { tmp = array[i] ;</p>&l

19、t;p>  int j = i-1 ;</p><p>  InsertSortCount.compare+= i ;</p><p>  while((tmp<array[j]&&j!=-1))</p><p><b>  {</b></p><p>  InsertSortCount.mo

20、ve++ ;</p><p>  array[j+1] = array[j] ;</p><p><b>  j-- ;</b></p><p><b>  }</b></p><p>  array[j+1] = tmp ;</p><p><b>  }<

21、/b></p><p><b>  }</b></p><p><b>  (3)簡(jiǎn)單選擇排序</b></p><p>  a開(kāi)始時(shí)設(shè)i的初始值為0,如果i<n-1,在數(shù)據(jù)元素序列arr[i]arr[n-1]中,選出具有最小關(guān)鍵字的數(shù)據(jù)元素arr[j];否則算法結(jié)束.若arr[k]不是這組數(shù)據(jù)元素中的第一個(gè)數(shù)據(jù)

22、元素(i≠k),則將arr[j]與arr[i]這兩數(shù)據(jù)元素的位置對(duì)調(diào);令i=i+1轉(zhuǎn)步驟. </p><p>  核心代碼:void SelectedSort(int array[] , int length)</p><p><b>  {</b></p><p>  SelectedSortCount.compare = 0 ;</p

23、><p>  SelectedSortCount.move = 0 ;</p><p><b>  int tmp ;</b></p><p><b>  int pos ;</b></p><p>  for(int i=0; i<length; i++)</p><p>

24、;<b>  {</b></p><p>  tmp = array[i] ;</p><p><b>  pos = i ;</b></p><p>  for(int j=i+1; j<length; j++)</p><p><b>  {</b></p>

25、;<p>  SelectedSortCount.compare++ ;</p><p>  if(tmp>array[j])</p><p><b>  {</b></p><p>  tmp = array[j] ;</p><p><b>  pos = j ;</b>&l

26、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  //SelectedSortCount.compare += (length-i-1;) </p><p>  if(pos!=i)</p><p><b>  {&

27、lt;/b></p><p>  SelectedSortCount.move ++ ;</p><p>  int t = array[i] ;</p><p>  array[i] = array[tmp] ;</p><p>  array[tmp] = t ;</p><p><b>  }&l

28、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  (4)快速排序</b></p><p>  快速排序(Quick Sort)又被稱做分區(qū)交換排序,這是一種平均性能非常好的排序方法。</p>

29、<p>  其算法基本思想是:任取排序表中的某個(gè)數(shù)據(jù)元素(例如取第一個(gè)數(shù)據(jù)元素)作為基準(zhǔn),按照該數(shù)據(jù)元素的關(guān)鍵字大小,將整個(gè)排序表劃分為左右兩個(gè)子表: 左側(cè)子表中所有數(shù)據(jù)元素的關(guān)鍵字都小于基準(zhǔn)數(shù)據(jù)元素的關(guān)鍵字。右側(cè)子表中所有數(shù)據(jù)元素的關(guān)鍵字都大于或等于基準(zhǔn)數(shù)據(jù)元素的關(guān)鍵字,基準(zhǔn)數(shù)據(jù)元素則排在這兩個(gè)子表中間(這也是該數(shù)據(jù)元素最終應(yīng)安放的位置),然后分別對(duì)這兩個(gè)子表重復(fù)施行上述方法的快速排序,直到所有的子表長(zhǎng)度為1,則排序結(jié)束

30、。</p><p>  核心代碼:void QuickSort(int array[], int length)</p><p><b>  {</b></p><p>  QuickSortCount.compare = 0 ;</p><p>  QuickSortCount.move = 0 ;</p>

31、<p>  int low = 0 ;</p><p>  int high = length ;</p><p>  QuickSort(array, low, high) ;</p><p><b>  }</b></p><p>  void QuickSort(int array[], int l

32、ow, int high)</p><p><b>  {</b></p><p><b>  int i,j ;</b></p><p><b>  i = low ;</b></p><p>  j = high ;</p><p>  int te

33、mp ;</p><p>  temp = array[low] ;</p><p><b>  if(i<j)</b></p><p><b>  {</b></p><p>  while(i<j)</p><p><b>  {</b>

34、</p><p>  while(i<j&&temp<array[j])</p><p><b>  {</b></p><p>  QuickSortCount.compare++ ;</p><p><b>  j--;</b></p><p>

35、;<b>  }</b></p><p><b>  if(i<j)</b></p><p><b>  {</b></p><p>  QuickSortCount.move++ ;</p><p>  int tmp = array[i] ;</p>&

36、lt;p>  array[i] = array[j] ;</p><p>  array[j] = tmp ;</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  QuickSortCount.compare++ ;</p>

37、<p>  while(i<j&&temp>=array[i])</p><p><b>  {</b></p><p><b>  i++;</b></p><p>  QuickSortCount.compare++ ;</p><p><b> 

38、 }</b></p><p><b>  if(i<j)</b></p><p><b>  {</b></p><p>  QuickSortCount.move++ ;</p><p>  int tmp = array[i] ;</p><p>  

39、array[i] = array[j] ;</p><p>  array[j] = tmp ;</p><p><b>  j--;</b></p><p><b>  }</b></p><p>  QuickSortCount.compare++ ;</p><p>&

40、lt;b>  }</b></p><p>  array[i]=temp;//將基準(zhǔn)元素就位</p><p>  QuickSort(array, low, i-1);//在左子區(qū)間遞歸進(jìn)行快速排序</p><p>  QuickSort(array, i+1, high);//在右子區(qū)間遞歸進(jìn)行快速排序</p><p>

41、<b>  }</b></p><p><b>  }</b></p><p><b> ?。?)希爾排序</b></p><p>  先取一個(gè)小于n的整數(shù)d1作為第一個(gè)增量,把文件的全部記錄分成d1個(gè)組。所有距離為dl的倍數(shù)的記錄放在同一個(gè)組中。先在各組內(nèi)進(jìn)行直接插入排序;然后,取第二個(gè)增量d2&l

42、t;d1重復(fù)上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進(jìn)行直接插入排序?yàn)橹埂?lt;/p><p>  void ShellSort(int array[],int length)</p><p><b>  {</b></p><p>  ShellSortCount.

43、compare = 0 ;</p><p>  ShellSortCount.move = 0 ;</p><p>  int d = length/2; //設(shè)置希爾排序的增量</p><p><b>  int i ;</b></p><p><b>  int j;</b></p&g

44、t;<p><b>  int temp;</b></p><p>  while(d>=1)</p><p><b>  {</b></p><p>  for(i=d;i<length;i++)</p><p><b>  {</b></p&

45、gt;<p>  temp=array[i];</p><p><b>  j=i-d;</b></p><p>  ShellSortCount.compare++ ;</p><p>  if(j>=0 && array[j]>temp)</p><p><b> 

46、 {</b></p><p>  array[j+d]=array[j];</p><p><b>  j=j-d;</b></p><p>  ShellSortCount.move++ ;</p><p><b>  }</b></p><p>  array

47、[j+d] = temp;</p><p><b>  }</b></p><p>  d= d/2; //縮小增量</p><p><b>  }</b></p><p><b> ?。?)堆排序</b></p><p>  a對(duì)排序表中的數(shù)據(jù)元

48、素,利用堆的調(diào)整算法形成初始堆。b.輸出堆頂元素。c.對(duì)剩余元素重新調(diào)整形成堆。d.重復(fù)執(zhí)行第b、c步,直到所有數(shù)據(jù)元素被輸出。</p><p><b>  核心代碼:</b></p><p>  (1)建立最大堆的偽代碼如下:</p><p>  void filterdown(int array[] ,const int start, in

49、t length)</p><p><b>  {</b></p><p>  //向下調(diào)整使從start開(kāi)始到currentsize-1為止的子表成為最大堆</p><p>  int i=start ;</p><p>  int j=2*i+1;//j為i的左孩子</p><p>  int

50、 temp=array[i];</p><p>  while(j<=length-1)</p><p><b>  {</b></p><p>  if(j<length-1 && array[j]<array[j+1])</p><p><b>  {</b>&

51、lt;/p><p>  j++;//在兩個(gè)孩子中選關(guān)鍵字較大者</p><p>  HeapSortCount.compare++ ;</p><p><b>  }</b></p><p>  if(temp>=array[j])</p><p><b>  break;</b

52、></p><p><b>  else</b></p><p><b>  {</b></p><p>  array[i]=array[j];</p><p><b>  i=j;</b></p><p><b>  j=2*j+1;

53、</b></p><p><b>  }</b></p><p>  HeapSortCount.compare++ ;</p><p><b>  }</b></p><p>  array[i]=temp;</p><p><b>  }</b

54、></p><p><b>  (2)堆排序</b></p><p>  如果建立的堆滿足最大堆的條件,則堆的第一個(gè)數(shù)據(jù)元素arr[0]具有最大的關(guān)鍵字,將arr[0]與arr[n-1]對(duì)調(diào),把具有最大關(guān)鍵字的數(shù)據(jù)元素交換到最后,再對(duì)前面的n-1個(gè)數(shù)據(jù)元素使用堆的調(diào)整算法,重新建立最大堆,結(jié)果把具有次最大關(guān)鍵字的數(shù)據(jù)元素又上浮到堆頂,即arr[0]的位置,再對(duì)調(diào)

55、arr[0]和arr[n-2],…,如此反復(fù)執(zhí)行n-1次,最后得到全部排序好的數(shù)據(jù)元素序列。</p><p>  void HeapSort(int array[], int length)</p><p><b>  {</b></p><p>  HeapSortCount.compare = 0 ;</p><p>

56、;  HeapSortCount.move = 0 ;</p><p>  int len=length;</p><p>  for(int j=(len-2)/2;j>=0;j--)</p><p>  filterdown(array, j, len ); //初始建堆</p><p>  for(int i=len

57、-1;i>=1;i--)</p><p><b>  {</b></p><p><b>  {</b></p><p><b>  int tmp ;</b></p><p>  tmp = array[0] ;</p><p>  array[

58、0] = array[i] ;</p><p>  array[i] = tmp ;</p><p>  HeapSortCount.move++ ;</p><p><b>  }</b></p><p><b>  len--;</b></p><p>  filterd

59、own(array, 0, len );//重建最大堆</p><p><b>  }</b></p><p><b>  }</b></p><p>  //FindLittleNumber</p><p>  int FindLittle(int array[], int length)<

60、/p><p><b>  {</b></p><p>  int little;</p><p>  little = array[0] ;</p><p>  for(int i=1; i<length; i++)</p><p>  if(little>array[i])</p&

61、gt;<p>  little = array[i];</p><p>  return little ;</p><p><b>  }</b></p><p><b>  5.測(cè)試分析:</b></p><p>  主界面:

62、 </p><p><b>  生成數(shù)組:</b></p><p><b>  輸出數(shù)組:</b></p><p><b>  進(jìn)行排序方式:</b></p><p><b>  效能分析:</b></p><p>

63、;  6.總結(jié):在進(jìn)行為期兩個(gè)星期的課程設(shè)計(jì)中,最終完成了算法。這期間,遇到的各種麻煩也都相繼解決。從這次實(shí)踐中,我意識(shí)到自己還有很多不足之處。</p><p>  首先先說(shuō)一下基本的。對(duì)于各種排序算法的過(guò)程還是不夠熟悉,進(jìn)行編程時(shí)還需要翻書查找,對(duì)于這一點(diǎn),只能說(shuō)對(duì)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)還不夠扎實(shí),雖然說(shuō)這門課程以后就沒(méi)有了,但是我想這門課對(duì)以后的學(xué)習(xí)會(huì)有很大幫助,所以有空時(shí)還應(yīng)該繼續(xù)熟悉這門課程。</p>

64、<p>  其次,就是對(duì)于錯(cuò)誤的處理,不能得心應(yīng)手,不能正確處理一些簡(jiǎn)單的錯(cuò)誤。對(duì)于邏輯上的錯(cuò)誤,不能夠立即找到出錯(cuò)點(diǎn),往往需要向同學(xué)請(qǐng)教才能找出錯(cuò)誤,并且改正。我覺(jué)得這是自己獨(dú)自思考能力不高的問(wèn)題,遇事需要自己仔細(xì)想想,若還不能改正,再請(qǐng)教別人也不遲。</p><p>  總而言之,從這次的實(shí)踐中我學(xué)到了很多東西,希望以后能夠多加運(yùn)應(yīng)。 </p><p>  7、參考文獻(xiàn):

65、[1] 朱戰(zhàn)立編著?。?dāng)?shù)據(jù)結(jié)構(gòu) (C語(yǔ)言描述)?。本焊叩冉逃霭嫔?004</p><p>  [2] 嚴(yán)蔚敏等編著 .?dāng)?shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程?。本呵迦A大學(xué)出版社2001</p><p>  [3] 陳本林等編著?。?dāng)?shù)據(jù)結(jié)構(gòu).南京:南京大學(xué)出版社,2002</p><p>  [4] 趙致琢著?。?jì)算科學(xué)導(dǎo)論 .北京:科學(xué)出版社,2000</p>

66、<p>  8、帶注釋的源程序:</p><p>  int main()</p><p><b>  {</b></p><p><b>  int* a;</b></p><p>  int* acopy;</p><p>  char ch='y&

67、#39;;</p><p>  while(ch=='y')</p><p><b>  {</b></p><p>  cout<<endl;</p><p>  cout<<"\t\t==============內(nèi)部排序的方法演示=============="

68、;<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t\t 1.\t生成數(shù)組"<<endl;</p><p>  cout<<"\t\t\t 2.\t輸出數(shù)組"<<endl;</p><

69、p>  cout<<"\t\t\t 3.\t進(jìn)行排序方式"<<endl;</p><p>  cout<<"\t\t\t 4.\t效能分析"<<endl;</p><p>  cout<<"\t\t\t 5.\t退出"<<endl;</p>

70、<p>  cout<<endl;</p><p>  cout<<"\t\t=============================================="<<endl;</p><p>  char select;</p><p>  cin>>select;</

71、p><p>  switch(select)</p><p><b>  {</b></p><p><b>  case '1':</b></p><p><b>  {</b></p><p>  system("cls&quo

72、t;);</p><p>  char ch1='0';</p><p>  cout<<"\t\t==============內(nèi)部排序的方法演示=============="<<endl;</p><p>  cout<<endl;</p><p>  cout<

73、<"\t\t\t請(qǐng)輸入創(chuàng)建的數(shù)組的大?。ㄕ麛?shù))"<<endl;</p><p>  cin>>array_size ;</p><p>  if(array_size>0)</p><p><b>  {</b></p><p>  a = new int[arra

74、y_size] ;</p><p>  acopy = new int[array_size] ;</p><p><b>  }</b></p><p>  while(ch1!='4')</p><p><b>  {</b></p><p>  sys

75、tem("cls") ;</p><p>  cout<<"\t\t==============內(nèi)部排序的方法演示=============="<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t\t請(qǐng)選擇數(shù)組元素的排列

76、"<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t\t1.\t正序"<<endl;</p><p>  cout<<"\t\t\t2.\t逆序"<<endl;</p><p

77、>  cout<<"\t\t\t3.\t亂序"<<endl;</p><p>  cout<<"\t\t\t4.\t退出"<<endl;</p><p><b>  cin>>ch1;</b></p><p>  switch(ch1)&l

78、t;/p><p><b>  {</b></p><p><b>  case '1':</b></p><p><b>  {</b></p><p>  for(int i=0; i<array_size;i++)</p><p>

79、<b>  {</b></p><p><b>  *a = i ;</b></p><p>  *acopy = i ;</p><p><b>  acopy++ ;</b></p><p><b>  a++ ;</b></p><

80、;p><b>  }</b></p><p>  a=a-array_size ;</p><p>  acopy = acopy-array_size;</p><p>  cout<<"\t\t正序數(shù)組創(chuàng)建成功,按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  w

81、hile(getchar()!='y');</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case '2':</b></p><p><b>  {</b&g

82、t;</p><p>  for(int i=array_size; i>=0; i--)</p><p><b>  {</b></p><p><b>  *a = i ;</b></p><p><b>  a++ ;</b></p><p>

83、;  *acopy = i ;</p><p><b>  acopy++ ;</b></p><p><b>  }</b></p><p>  acopy = acopy-array_size ;</p><p>  a=a-array_size ;</p><p>  

84、cout<<"\t\t逆序數(shù)組創(chuàng)建成功,按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getchar()!='y');</p><p><b>  }</b></p><p><b>  break;</b></p><p&

85、gt;<b>  case '3':</b></p><p><b>  {</b></p><p>  for(int i=0; i<array_size; i++)</p><p><b>  {</b></p><p>  *a = rand()%1

86、000;</p><p><b>  a++ ;</b></p><p>  *acopy = rand()%1000; ;</p><p><b>  acopy++ ;</b></p><p><b>  }</b></p><p>  acopy

87、= acopy-array_size ;</p><p>  a=a-array_size ;</p><p>  cout<<"\t\t亂序數(shù)組創(chuàng)建成功,按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getchar()!='y');</p><p><b&

88、gt;  }</b></p><p><b>  break;</b></p><p><b>  case '4':</b></p><p><b>  ch1='4' ;</b></p><p><b>  break;

89、</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  c

90、ase '2':</b></p><p><b>  {</b></p><p>  system("cls");</p><p>  cout<<"\t\t==============內(nèi)部排序的方法演示=============="<<endl;<

91、;/p><p>  cout<<endl;</p><p>  if(array_size==0)</p><p><b>  {</b></p><p>  cout<<"\t\t\t數(shù)組為空,請(qǐng)創(chuàng)建數(shù)組再試"<<endl;</p><p> 

92、 while(getchar()!='y')</p><p><b>  ;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p>

93、<p><b>  {</b></p><p>  system("cls");</p><p>  cout<<"\t\t==============內(nèi)部排序的方法演示=============="<<endl;</p><p>  cout<<endl

94、;</p><p>  cout<<"\t\t1.\t輸出初始數(shù)組"<<endl;</p><p>  cout<<"\t\t2.\t輸出排序后的數(shù)組"<<endl;</p><p>  char tmp ;</p><p><b>  cin&

95、gt;>tmp;</b></p><p>  if(tmp=='1')</p><p><b>  {</b></p><p>  for(int i=0; i<array_size; i++)</p><p>  { if((i!=0)&&(i%7==

96、0))</p><p>  cout<<endl;</p><p>  cout<<'\t'<<*a;</p><p><b>  a++ ;</b></p><p><b>  }</b></p><p>  cout&l

97、t;<endl;</p><p>  a = a - array_size ;</p><p>  cout<<endl;</p><p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getchar()!='y')&l

98、t;/p><p><b>  ;</b></p><p><b>  }</b></p><p>  if(tmp=='2')</p><p><b>  {</b></p><p>  for(int i=0; i<array_siz

99、e; i++)</p><p><b>  {</b></p><p>  if((i!=0)&&(i%7==0))</p><p>  cout<<endl;</p><p>  cout<<'\t'<<*acopy;</p><p

100、><b>  acopy++ ;</b></p><p><b>  }</b></p><p>  cout<<endl;</p><p>  acopy = acopy - array_size ;</p><p>  cout<<endl;</p>

101、<p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getchar()!='y')</p><p><b>  ;</b></p><p><b>  }</b></p><p>&

102、lt;b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case '3':</b></p><p><b>  {</b></p

103、><p>  char ch2 = 'y' ;</p><p>  while(ch2=='y'){</p><p>  system("cls") ;</p><p>  cout<<"\t\t==============內(nèi)部排序的方法演示==============&q

104、uot;<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t\t請(qǐng)選擇排序的方式"<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t\t1.

105、\t冒泡排序"<<endl;</p><p>  cout<<"\t\t\t2.\t簡(jiǎn)單選擇排序"<<endl;</p><p>  cout<<"\t\t\t3.\t直接插入排序"<<endl;</p><p>  cout<<"\t

106、\t\t4.\t快速排序"<<endl;</p><p>  cout<<"\t\t\t5.\t希爾排序"<<endl;</p><p>  cout<<"\t\t\t6.\t堆排序"<<endl;</p><p>  cout<<"\

107、t\t\t7.\t退出"<<endl;</p><p><b>  char tmp;</b></p><p><b>  cin>>tmp;</b></p><p>  switch(tmp)</p><p><b>  {</b></

108、p><p><b>  case '1':</b></p><p><b>  {</b></p><p>  system("cls") ;</p><p>  cout<<"\t\t==============內(nèi)部排序的方法=========

109、====="<<endl;</p><p>  cout<<endl;</p><p>  for(int i = 0; i<array_size; i++)</p><p><b>  {</b></p><p>  *acopy = *a;</p><p&g

110、t;<b>  acopy++;</b></p><p><b>  a++;</b></p><p><b>  }</b></p><p>  acopy = acopy - array_size ;</p><p>  a = a - array_size ;</p

111、><p>  BubleSort(acopy,array_size) ;</p><p>  cout<<"\t\t冒泡排序比的較次數(shù)為\t"<<BubleSortCount.compare<<endl;</p><p>  cout<<endl;</p><p>  cout&

112、lt;<"\t\t冒泡排序的移動(dòng)次數(shù)為\t"<<BubleSortCount.move<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getc

113、har()!='y') ;</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case '2':</b></p><p><b>  {</b></p

114、><p>  system("cls") ;</p><p>  cout<<"\t\t==============內(nèi)部排序的方法=============="<<endl;</p><p>  cout<<endl;</p><p>  for(int i = 0; i

115、<array_size; i++)</p><p><b>  {</b></p><p>  *acopy = *a;</p><p><b>  acopy++;</b></p><p><b>  a++;</b></p><p><b

116、>  }</b></p><p>  acopy = acopy - array_size ;</p><p>  a = a - array_size ;</p><p>  SelectedSort(acopy,array_size) ;</p><p>  cout<<"\t\t簡(jiǎn)單選擇排序比的較

117、次數(shù)為\t"<<SelectedSortCount.compare<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t簡(jiǎn)單選擇排序的移動(dòng)次數(shù)為\t"<<SelectedSortCount.move<<endl;</p><

118、;p>  cout<<endl;</p><p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getchar()!='y') ;</p><p><b>  }</b></p><p><b

119、>  break;</b></p><p><b>  case '3':</b></p><p><b>  {</b></p><p>  system("cls") ;</p><p>  cout<<"\t\t===

120、===========內(nèi)部排序的方法=============="<<endl;</p><p>  cout<<endl;</p><p>  for(int i = 0; i<array_size; i++)</p><p><b>  {</b></p><p>  *aco

121、py = *a;</p><p><b>  acopy++;</b></p><p><b>  a++;</b></p><p><b>  }</b></p><p>  acopy = acopy - array_size ;</p><p> 

122、 a = a - array_size ;</p><p>  InsertSort(acopy,array_size) ;</p><p>  cout<<"\t\t直接插入排序比的較次數(shù)為\t"<<InsertSortCount.compare<<endl;</p><p>  cout<<en

123、dl;</p><p>  cout<<"\t\t直接插入排序的移動(dòng)次數(shù)為\t"<<InsertSortCount.move<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)"<<endl

124、;</p><p>  while(getchar()!='y') ;</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case '4':</b></p><

125、;p><b>  {</b></p><p>  system("cls") ;</p><p>  cout<<"\t\t==============內(nèi)部排序的方法=============="<<endl;</p><p>  cout<<endl;</

126、p><p>  for(int i = 0; i<array_size; i++)</p><p><b>  {</b></p><p>  *acopy = *a;</p><p><b>  acopy++;</b></p><p><b>  a++;&l

127、t;/b></p><p><b>  }</b></p><p>  acopy = acopy - array_size ;</p><p>  a = a - array_size ;</p><p>  QuickSort(acopy,array_size) ;</p><p>  

128、cout<<"\t\t快速排序比的較次數(shù)為\t"<<QuickSortCount.compare<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t快速排序的移動(dòng)次數(shù)為\t"<<QuickSortCount.move<<

129、;endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getchar()!='y') ;</p><p><b>  }</b></

130、p><p><b>  break;</b></p><p><b>  case '5':</b></p><p><b>  {</b></p><p>  system("cls") ;</p><p>  cout

131、<<"\t\t==============內(nèi)部排序的方法=============="<<endl;</p><p>  cout<<endl;</p><p>  for(int i = 0; i<array_size; i++)</p><p><b>  {</b></p

132、><p>  *acopy = *a;</p><p><b>  acopy++;</b></p><p><b>  a++;</b></p><p><b>  }</b></p><p>  acopy = acopy - array_size ;&

133、lt;/p><p>  a = a - array_size ;</p><p>  ShellSort(acopy,array_size) ;</p><p>  cout<<"\t\t希爾排序比的較次數(shù)為\t"<<ShellSortCount.compare<<endl;</p><p>

134、;  cout<<endl;</p><p>  cout<<"\t\t希爾排序的移動(dòng)次數(shù)為\t"<<ShellSortCount.move<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)&quo

135、t;<<endl;</p><p>  while(getchar()!='y') ;</p><p><b>  }</b></p><p><b>  break ;</b></p><p><b>  case '6':</b>

136、</p><p><b>  {</b></p><p>  system("cls") ;</p><p>  cout<<"\t\t==============內(nèi)部排序的方法=============="<<endl;</p><p>  cout<

137、;<endl;</p><p>  for(int i = 0; i<array_size; i++)</p><p><b>  {</b></p><p>  *acopy = *a;</p><p><b>  acopy++;</b></p><p>&l

138、t;b>  a++;</b></p><p><b>  }</b></p><p>  acopy = acopy - array_size ;</p><p>  a = a - array_size ;</p><p>  HeapSort(acopy,array_size) ;</p>

139、;<p>  cout<<"\t\t堆排序比的較次數(shù)為\t"<<HeapSortCount.compare<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t排序的移動(dòng)次數(shù)為\t"<<HeapSortCount.mo

140、ve<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t\t按下y鍵回車?yán)^續(xù)"<<endl;</p><p>  while(getchar()!='y') ;</p><p><b>  }</b

141、></p><p><b>  break ;</b></p><p><b>  case '7':</b></p><p>  ch2 ='n' ;</p><p><b>  break;</b></p><p&g

142、t;<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case '4':</b><

143、;/p><p><b>  {</b></p><p>  system("cls") ;</p><p>  cout<<"\t\t========================統(tǒng)計(jì)次數(shù)========================"<<endl;</p><

144、p>  cout<<endl;</p><p>  cout<<"\t|排序方式|\t\t|比較次數(shù)|\t\t|移動(dòng)次數(shù)|"<<endl;</p><p>  cout<<endl;</p><p>  cout<<"\t冒泡排序 \t\t "<&l

145、t;BubleSortCount.compare<<"\t\t "<<BubleSortCount.move<<endl;</p><p>  cout<<"\t簡(jiǎn)單選擇排序\t\t "<<SelectedSortCount.compare<<"\t\t "<<Sel

146、ectedSortCount.move<<endl;</p><p>  cout<<"\t直接插入排序\t\t "<<InsertSortCount.compare<<"\t\t "<<InsertSortCount.move<<endl;</p><p>  cout<

147、;<"\t快速排序 \t\t "<<QuickSortCount.compare<<"\t\t "<<QuickSortCount.move<<endl;</p><p>  cout<<"\t希爾排序 \t\t "<<ShellSortCount.compare

148、<<"\t\t "<<ShellSortCount.move<<endl;</p><p>  cout<<"\t堆排序 \t\t "<<HeapSortCount.compare<<"\t\t "<<HeapSortCount.move<<en

149、dl;</p><p>  cout<<endl;</p><p>  cout<<"\t"<<endl;</p><p>  cout<<"\t\t\t按y鍵繼續(xù)"<<endl;</p><p>  while(getchar()!='

150、;y') ;</p><p><b>  }</b></p><p><b>  break ;</b></p><p><b>  case '5':</b></p><p><b>  exit(0);</b></p>

151、;<p><b>  break;</b></p><p><b>  }</b></p><p>  //cout<<"是否繼續(xù),y為繼續(xù),其他退出"<<endl;</p><p>  system("cls") ;</p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論