版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)排序綜合課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)排序綜合課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)排序綜合課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—綜合排序的設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--排序算法
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---希爾排序,冒泡排序,快速排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--冒泡排序法
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---排序算法比較
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--排序算法比較
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--內(nèi)部排序演示
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--排序算法演示系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---撲克牌排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---排序算法的實(shí)現(xiàn)
- 拓?fù)渑判?算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----內(nèi)部排序算法性能分析
- 大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)排序算法演示系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--內(nèi)部排序算法的比較
評(píng)論
0/150
提交評(píng)論