

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p> 論文題目:基于線性表下的查找與排序</p><p> 2014年1月17日</p><p><b> 實(shí)驗(yàn)環(huán)境</b></p><p> 硬件:學(xué)生每人一臺(tái)計(jì)算機(jī)。</p><p> 軟件:W
2、indows操作系統(tǒng),Visual C++6.0。</p><p><b> 實(shí)驗(yàn)內(nèi)容</b></p><p> 基于線性表下的查找與排序。</p><p><b> 實(shí)驗(yàn)原理</b></p><p> 基于線性表的查找法概述</p><p> 集合結(jié)構(gòu)是數(shù)據(jù)對(duì)象之
3、間關(guān)系松散的一種數(shù)據(jù)結(jié)構(gòu),對(duì)其進(jìn)行查找是根據(jù)給定的關(guān)鍵字,在特定的列表中確定一個(gè)其關(guān)鍵字與給定值相同的數(shù)據(jù)元素,并返回該數(shù)據(jù)元素在列表中的位置。查找的方法分為比較式查找法和計(jì)算式查找法,其中比較式查找法可分為基于線性表的查找法和基于樹(shù)的查找法;而計(jì)算式查找法也稱為Hash(哈希)查找法。基于線性表的查找法是將集合的數(shù)據(jù)對(duì)象組織成為線性表形式進(jìn)行查找,即用給定的關(guān)鍵字與線性表中各元素的關(guān)鍵字逐個(gè)比較,直到成功或失敗。線性表的存儲(chǔ)結(jié)構(gòu)通常是
4、順序存儲(chǔ)結(jié)構(gòu),也可使用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。</p><p> 查找時(shí)可在表的一端設(shè)置一個(gè)“監(jiān)視哨”,存放要查找元素的關(guān)鍵字,從表的另一端開(kāi)始查找,若在“監(jiān)視哨”找到要查找元素的關(guān)鍵字,返回失敗信息,否則返回關(guān)鍵字的位序。基于線性表的查找技術(shù)有著非常廣泛的應(yīng)用。</p><p> 基于線性表的排序法概述</p><p> 排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,在數(shù)值計(jì)
5、算或數(shù)據(jù)處理過(guò)程中,都會(huì)直接或間接用到數(shù)據(jù)的排序問(wèn)題。排序的功能是將一個(gè)數(shù)據(jù)元素(或稱記錄)的無(wú)序序列,按數(shù)據(jù)元素的關(guān)鍵字大小排列成一個(gè)遞增或遞減有序的記錄序列。</p><p> 由于待排序的記錄數(shù)量不同,使得排序過(guò)程中涉及的存儲(chǔ)器也不同,因此可將排序方法分為內(nèi)排序和外排序。內(nèi)排序包括插入、交換、選擇和歸并等幾類排序。</p><p> 2.1基于插入類的排序概述</p>
6、<p> 插入類排序的基本思想是假定記錄序列中前面的一部分記錄已經(jīng)有序,把后面的一個(gè)記錄插入已排序的有序子序列中去,使得插入這個(gè)記錄后得到的依然是有序序列,從而逐步擴(kuò)大有序的子序列的長(zhǎng)度,直到所有記錄都有序?yàn)橹?。直接插入排序是采用順序查找法?lái)確定記錄的插入位置。折半插入排序是采用折半查找法來(lái)確定記錄的插入位置。希爾排序是對(duì)待排序記錄序列先做宏觀直接插入排序調(diào)整,再做微觀直接插入排序調(diào)整,故稱縮小增量排序排序。</p
7、><p> 2.2基于交換類的排序概述</p><p> 交換排序的基本思想是兩兩比較待排序記錄的關(guān)鍵字,當(dāng)兩個(gè)記錄的次序相反時(shí)進(jìn)行交換,直到?jīng)]有反序的記錄為止?;诮粨Q類的排序有冒泡排序和快速排序。</p><p> 冒泡排序是比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。對(duì)每一對(duì)相鄰元素作同樣的工作,從開(kāi)始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)
8、該會(huì)是最大的數(shù)。針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。持續(xù)每次對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。</p><p> 快速排序是對(duì)冒泡排序的一種改進(jìn)。它的基本思想是:通過(guò)一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。</p&g
9、t;<p> 2.3基于選擇類的排序概述</p><p> 選擇排序的基本思想是從每一趟待排序數(shù)據(jù)中選取一個(gè)關(guān)鍵字最小的記錄,并置于適當(dāng)?shù)奈恢蒙?。即第一趟從n個(gè)記錄中選取關(guān)鍵字最小的記錄,第二趟從剩下的n-1個(gè)記錄中選取關(guān)鍵字最小的記錄,直到整個(gè)序列的記錄選完,由選取記錄的順序便可得到關(guān)鍵字有序的序列。堆排序的基本思想是通過(guò)類似于淘汰賽的想法,讓序列中的關(guān)鍵字兩兩相比,不斷淘汰較大者,最終選出關(guān)
10、鍵字最小的記錄。</p><p><b> 系統(tǒng)測(cè)試</b></p><p> 4.1基于線性表的查找源代碼</p><p> #include<stdio.h></p><p> #include<process.h></p><p> #define LIST
11、_SIZE 100</p><p> //定義順序表的最大長(zhǎng)度</p><p> typedef int keyType ;</p><p> //定義關(guān)鍵字類型為整形</p><p> typedef struct </p><p><b> {</b></p><
12、p> keyType key ;</p><p><b> //關(guān)鍵字項(xiàng)</b></p><p><b> }</b></p><p> RecordType ;</p><p><b> //記錄類型</b></p><p> typ
13、edef struct </p><p><b> {</b></p><p> RecordType r[LIST_SIZE+1];</p><p> //r[0]用作監(jiān)視哨</p><p> int length ;</p><p><b> //定義順序表長(zhǎng)度</b
14、></p><p><b> }</b></p><p> RecordList ;</p><p><b> //順序表類型</b></p><p><b> /*函數(shù)申明*/</b></p><p> void CreatList(R
15、ecordList*L);</p><p> int SeqSearch(RecordList*l,keyType k);</p><p> int BinSrch(RecordList*l,keyType k);</p><p> void Display(RecordList*L);</p><p> void shunxu();
16、</p><p> void zheban();</p><p> void Menu();</p><p><b> //主函數(shù)</b></p><p> int main()</p><p><b> {</b></p><p><
17、b> int i ;</b></p><p><b> Menu();</b></p><p> printf("請(qǐng)選擇:\n");</p><p> scanf("%d",&i);</p><p><b> switch(i)<
18、/b></p><p><b> {</b></p><p><b> case 1 :</b></p><p><b> {</b></p><p><b> shunxu();</b></p><p><b&
19、gt; break ;</b></p><p><b> }</b></p><p><b> case 2 :</b></p><p><b> {</b></p><p><b> zheban();</b></p>
20、<p><b> break ;</b></p><p><b> }</b></p><p><b> case 3 :</b></p><p><b> exit(1);</b></p><p><b> default
21、 :</b></p><p><b> {</b></p><p> printf("輸入命令錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p><b> break ;</b></p><p><b> }</b></p>&l
22、t;p><b> Menu();</b></p><p> printf("請(qǐng)選擇:\n");</p><p> scanf("%d",&i);</p><p><b> }</b></p><p> return 0 ;</p&
23、gt;<p><b> }</b></p><p><b> //創(chuàng)建線性表</b></p><p> void CreatList(RecordList*L)</p><p><b> {</b></p><p><b> int i ;&l
24、t;/b></p><p> printf("請(qǐng)輸入數(shù)據(jù)元素的個(gè)數(shù):");</p><p> scanf("%d",&L->length);</p><p> printf("請(qǐng)輸入數(shù)據(jù)元素:\n");</p><p> for(i=1;i<=L-&
25、gt;length;i++)</p><p> scanf("%d",&L->r[i]);</p><p><b> }</b></p><p> /*有哨兵的順序查找*/</p><p> int SeqSearch(RecordList*l,keyType k)</p&
26、gt;<p><b> {</b></p><p><b> int i ;</b></p><p> l->r[0].key=k ;</p><p> i=l->length ;</p><p> while(l->r[i].key!=k)</p&g
27、t;<p><b> i--;</b></p><p> return i ;</p><p><b> }</b></p><p><b> /*折半查找*/</b></p><p> int BinSrch(RecordList*l,keyType
28、k)</p><p><b> {</b></p><p> int low,high,mid ;</p><p><b> low=1 ;</b></p><p> high=l->length ;</p><p> while(low<=high)&
29、lt;/p><p><b> {</b></p><p> mid=(low+high)/2 ;</p><p> if(k==l->r[mid].key)</p><p> return mid ;</p><p> else if(k<l->r[mid].key)<
30、;/p><p> high=mid-1 ;</p><p><b> else </b></p><p> low=mid+1 ;</p><p><b> }</b></p><p> return 0 ;</p><p><b>
31、 }</b></p><p> /*折半查找結(jié)果*/</p><p> void zheban()</p><p><b> {</b></p><p><b> int key ;</b></p><p> RecordList l ;</p&g
32、t;<p> printf("折半查找如下:\n");</p><p> CreatList(&l);</p><p> Display(&l);</p><p> printf("\n請(qǐng)輸入關(guān)鍵字?jǐn)?shù)據(jù):\n");</p><p> scanf("%d&
33、quot;,&key);</p><p> if(BinSrch(&l,key))</p><p> printf("關(guān)鍵字?jǐn)?shù)據(jù)的位置是:%d\n",BinSrch(&l,key));</p><p><b> else </b></p><p> printf(&qu
34、ot;不存在這樣的關(guān)鍵字!\n");</p><p><b> }</b></p><p> /*順序查找結(jié)果*/</p><p> void shunxu()</p><p><b> {</b></p><p><b> int key ;&
35、lt;/b></p><p> RecordList l ;</p><p> printf("順序查找如下:\n");</p><p> CreatList(&l);</p><p> Display(&l);</p><p> printf("\n請(qǐng)輸入
36、關(guān)鍵字?jǐn)?shù)據(jù):\n");</p><p> scanf("%d",&key);</p><p> if(SeqSearch(&l,key))</p><p> printf("關(guān)鍵字?jǐn)?shù)據(jù)的位置是:%d\n",SeqSearch(&l,key));</p><p>&
37、lt;b> else </b></p><p> printf("不存在這樣的關(guān)鍵字!\n");</p><p><b> }</b></p><p><b> //輸出線性表</b></p><p> void Display(RecordList*
38、L)</p><p><b> {</b></p><p><b> int i ;</b></p><p> printf("數(shù)據(jù)集合輸出:\n");</p><p> printf("序號(hào)\t\t");</p><p>
39、for(i=1;i<=L->length;i++)</p><p> printf("%d\t",i);</p><p> printf("\n");</p><p> printf("數(shù)據(jù)元素\t");</p><p> for(i=1;i<=L->
40、length;i++)</p><p> printf("%d\t",L->r[i]);</p><p> printf("\n");</p><p><b> }</b></p><p><b> //程序菜單</b></p>&
41、lt;p> void Menu()</p><p><b> {</b></p><p> printf("/********************************基于線性表的查找******************************/");</p><p> printf("/*
42、 1:順序查找 */");</p><p> printf("/* 2:折半查找 */");</p><p>
43、; printf("/* 3:退出 */");</p><p> printf("/******************************************************************************/&q
44、uot;);</p><p><b> }</b></p><p><b> 測(cè)試結(jié)果如下:</b></p><p> 4.2基于線性表的排序源代碼</p><p> #include<stdio.h></p><p> #include<proc
45、ess.h></p><p> #define MAXSIZE 100//定義順序表的最大長(zhǎng)度</p><p> typedef int keyType;//定義關(guān)鍵字類型為整形</p><p> typedef struct</p><p><b> {</b></p><p>
46、 keyType key;//關(guān)鍵字項(xiàng)</p><p> }RedType;//記錄類型</p><p> typedef struct</p><p><b> {</b></p><p> RedType r[MAXSIZE+1];//r[0]用作監(jiān)視哨</p><p> int l
47、ength;//定義順序表長(zhǎng)度</p><p> }SqList;//順序表類型</p><p><b> //函數(shù)申明</b></p><p> void CreateSqList(SqList *L);</p><p> void InsertSort(SqList *L);</p><p
48、> void BInsertSort(SqList *L);</p><p> void ShellInsert(SqList *L,int dk);</p><p> void ShellSort(SqList *L,int dlta[],int t);</p><p> void BubbleSort(SqList *L);</p>
49、<p> int Partition(SqList *L,int low,int high);</p><p> void QSort(SqList *L,int s,int t);</p><p> void QuickSort(SqList *L);</p><p> void SelectSort(SqList *L);</p>
50、<p> void HeapAdjust(SqList *L,int s,int t);</p><p> void HeapSort(SqList *L);</p><p> void Display(SqList *L);</p><p> void Menu();</p><p> int main() //主
51、函數(shù)</p><p><b> {</b></p><p><b> int i;</b></p><p><b> SqList l;</b></p><p> int dlta[3]={5,3,1};//希爾排序的增量</p><p><
52、;b> Menu();</b></p><p> printf("請(qǐng)選擇:");</p><p> scanf("%d",&i);</p><p><b> switch(i)</b></p><p><b> {</b>&
53、lt;/p><p><b> case 1:</b></p><p><b> {</b></p><p> CreateSqList(&l);</p><p> Display(&l);</p><p> InsertSort(&l);<
54、/p><p> printf("直接插入排序輸出:\n");</p><p> Display(&l);</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 2:
55、</b></p><p><b> {</b></p><p> CreateSqList(&l);</p><p> Display(&l);</p><p> BInsertSort(&l);</p><p> printf("折半插入排
56、序輸出:\n");</p><p> Display(&l);</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 3:</b></p><p><b&
57、gt; {</b></p><p> CreateSqList(&l);</p><p> Display(&l);</p><p> ShellSort(&l,dlta,3);</p><p> printf("希爾排序輸出:\n");</p><p>
58、; Display(&l);</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 4:</b></p><p><b> {</b></p><p
59、> CreateSqList(&l);</p><p> Display(&l);</p><p> BubbleSort(&l);</p><p> printf("冒泡排序輸出:\n");</p><p> Display(&l);</p><p>
60、;<b> break;</b></p><p><b> }</b></p><p><b> case 5:</b></p><p><b> {</b></p><p> CreateSqList(&l);</p>&
61、lt;p> Display(&l);</p><p> QuickSort(&l);</p><p> printf("快速排序輸出:\n");</p><p> Display(&l);</p><p><b> break;</b></p>&
62、lt;p><b> }</b></p><p><b> case 6:</b></p><p><b> {</b></p><p> CreateSqList(&l);</p><p> Display(&l);</p><
63、;p> SelectSort(&l);</p><p> printf("簡(jiǎn)單選擇排序輸出:\n");</p><p> Display(&l);</p><p><b> break;</b></p><p><b> }</b></p&g
64、t;<p><b> case 7:</b></p><p><b> {</b></p><p> CreateSqList(&l);</p><p> Display(&l);</p><p> HeapSort(&l);</p>&
65、lt;p> printf("堆排序輸出:\n");</p><p> Display(&l);</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 0:</b>&l
66、t;/p><p><b> exit(1);</b></p><p><b> default:</b></p><p><b> {</b></p><p> printf("輸入命令錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p>
67、;<b> break;</b></p><p><b> }</b></p><p><b> Menu();</b></p><p> printf("請(qǐng)選擇:\n");</p><p> scanf("%d",&i
68、);</p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void CreateSqList(SqList *L)//創(chuàng)建線性表</p><p>&l
69、t;b> {</b></p><p><b> int i;</b></p><p> printf("請(qǐng)輸入數(shù)據(jù)元素的個(gè)數(shù):");</p><p> scanf("%d",&L->length);</p><p> printf(&quo
70、t;請(qǐng)輸入數(shù)據(jù)元素:\n");</p><p> for(i=1;i<=L->length;i++)</p><p> scanf("%d",&L->r[i]);</p><p><b> }</b></p><p> void InsertSort(SqL
71、ist *L)//直接插入排序</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=2;i<=L->length;++i)</p><p> if(L->r[i].key<L->r[i-1].k
72、ey)</p><p><b> {</b></p><p> L->r[0]=L->r[i];</p><p> L->r[i]=L->r[i-1];</p><p> for(j=i-2;L->r[0].key<L->r[j].key;--j)</p>
73、<p> L->r[j+1]=L->r[j];</p><p> L->r[j+1]=L->r[0];</p><p><b> }</b></p><p><b> }</b></p><p> void BInsertSort(SqList *L)//
74、折半插入排序</p><p><b> {</b></p><p> int i,j,low,high,m;</p><p> for(i=2;i<=L->length;++i)</p><p><b> {</b></p><p> L->r[0
75、]=L->r[i];</p><p><b> low=1;</b></p><p><b> high=i-1;</b></p><p> while(low<=high)</p><p><b> {</b></p><p>
76、m=(low+high)/2;</p><p> if(L->r[0].key<L->r[m].key)</p><p><b> high=m-1;</b></p><p><b> else</b></p><p><b> low=m+1;</b>
77、;</p><p><b> }</b></p><p> for(j=i-1;j>=high+1;--j)</p><p> L->r[j+1]=L->r[j];</p><p> L->r[high+1]=L->r[0];</p><p><b>
78、; }</b></p><p><b> }</b></p><p> void ShellInsert(SqList *L,int dk) //一趟希爾排序</p><p><b> {</b></p><p><b> int i,j;</b><
79、;/p><p> for(i=dk+1;i<L->length;++i)</p><p> if(L->r[i].key<L->r[i-dk].key)</p><p><b> {</b></p><p> L->r[0]=L->r[j];</p><p
80、> for(j=i-dk;j>0&&(L->r[0].key<L->r[j].key);j-=dk)</p><p> L->r[j+dk]=L->r[j];</p><p> L->r[j+dk]=L->r[0];</p><p><b> }</b></p&
81、gt;<p><b> }</b></p><p> void ShellSort(SqList *L,int dlta[],int t)//希爾排序</p><p><b> {</b></p><p><b> int k;</b></p><p>
82、 for(k=0;k<t;k++)</p><p> ShellInsert(L,dlta[k]);</p><p><b> }</b></p><p> void BubbleSort(SqList *L)//冒泡排序法</p><p><b> {</b></p>
83、<p> int i=L->length,j,temp;</p><p> int lastExchangeIndex;</p><p> while(i>1)</p><p><b> {</b></p><p> lastExchangeIndex=1;</p><
84、p> for(j=1;j<i;j++)</p><p> if(L->r[j+1].key<L->r[j].key)</p><p><b> {</b></p><p> temp=L->r[j+1].key;</p><p> L->r[j+1].key=L->
85、;r[j].key;</p><p> L->r[j].key=temp;</p><p> lastExchangeIndex=j;</p><p><b> }</b></p><p> i=lastExchangeIndex;</p><p><b> }</
86、b></p><p><b> }</b></p><p> int Partition(SqList *L,int low,int high)//一趟快速排序?qū)ふ覙休S</p><p><b> {</b></p><p><b> int key;</b><
87、;/p><p> key=L->r[low].key;</p><p> while(low<high)</p><p><b> {</b></p><p> while(low<high&&L->r[high].key>=key)</p><p&g
88、t;<b> --high;</b></p><p> L->r[low].key=L->r[high].key;</p><p> while(low<high&&L->r[low].key<=key)</p><p><b> ++low;</b></p>
89、;<p> L->r[high].key=L->r[low].key;</p><p><b> }</b></p><p> L->r[low].key=key;</p><p> return low;</p><p><b> }</b></p&
90、gt;<p> void QSort(SqList *L,int s,int t)//對(duì)區(qū)間[s,t]進(jìn)行快速排序</p><p><b> {</b></p><p> int pivotloc=Partition(L,s,t);</p><p> if(t-s<=1)</p><p>&l
91、t;b> return;</b></p><p> QSort(L,s,pivotloc-1);</p><p> QSort(L,pivotloc+1,t);</p><p><b> }</b></p><p> void QuickSort(SqList *L) //對(duì)順序表進(jìn)行快
92、速排序</p><p><b> {</b></p><p> QSort(L,1,L->length);</p><p><b> }</b></p><p> void SelectSort(SqList *L) //簡(jiǎn)單選擇排序</p><p><
93、;b> {</b></p><p> int i,j,temp,t;</p><p> for(i=1;i<L->length;i++)</p><p><b> {</b></p><p> for(j=i+1,t=i;j<=L->length;j++)</p&
94、gt;<p><b> {</b></p><p> if(L->r[t].key>L->r[j].key)</p><p><b> t=j;</b></p><p><b> }</b></p><p><b> if(t
95、!=i)</b></p><p><b> {</b></p><p> temp=L->r[t].key;</p><p> L->r[t].key=L->r[i].key;</p><p> L->r[i].key=temp;</p><p><
96、;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void HeapAdjust(SqList *L,int s,int t) //堆的賽選</p><p><b> {</b><
97、;/p><p> int j,key;</p><p> key=L->r[s].key;</p><p> for(j=2*s;j<=t;j*=2)</p><p><b> {</b></p><p> if(j<t&&L->r[j].key<
98、;L->r[j+1].key)</p><p><b> ++j;</b></p><p> if(key>=L->r[j].key)</p><p><b> break;</b></p><p> L->r[s].key=L->r[j].key;</p
99、><p><b> s=j;</b></p><p><b> }</b></p><p> L->r[s].key=key;</p><p><b> }</b></p><p> void HeapSort(SqList *L) //對(duì)
100、順序表進(jìn)行堆排序</p><p><b> {</b></p><p> int key,i;</p><p> for(i=L->length/2;i>0;i--)</p><p> HeapAdjust(L,i,L->length);</p><p> for(i=
101、L->length;i>1;--i)</p><p><b> {</b></p><p> key=L->r[1].key;</p><p> L->r[1].key=L->r[i].key;</p><p> L->r[i].key=key;</p><
102、p> HeapAdjust(L,1,i-1);</p><p><b> }</b></p><p><b> }</b></p><p> void Display(SqList *L) //輸出線性表</p><p><b> {</b></p>
103、;<p><b> int i;</b></p><p> printf("數(shù)據(jù)集合輸出:\n");</p><p> printf("序號(hào)\t\t");</p><p> for(i=1;i<=L->length;i++)</p><p> p
104、rintf("%d\t",i);</p><p> printf("\n");</p><p> printf("數(shù)據(jù)元素\t");</p><p> for(i=1;i<=L->length;i++)</p><p> printf("%d\t&quo
105、t;,L->r[i]);</p><p> printf("\n");</p><p><b> }</b></p><p> void Menu() //程序菜單</p><p><b> {</b></p><p> printf(
106、"/**********************************基于線性表的各種排序************************/");</p><p> printf(" 1:直接插入排序\n");</p><p> printf("
107、 2:折半插入排序\n");</p><p> printf(" 3:希爾排序\n");</p><p> printf(" 4:冒泡排序\n");</p>
108、<p> printf(" 5:快速排序\n");</p><p> printf(" 6:簡(jiǎn)單選擇排序\n");</p><p> printf("
109、 7:堆排序\n");</p><p> printf(" 0:退出\n");</p><p> printf("/****************************************************************************
110、**/\n");</p><p><b> }</b></p><p><b> 測(cè)試結(jié)果如下:</b></p><p><b> 4.3測(cè)試評(píng)價(jià)</b></p><p> 優(yōu)點(diǎn):此次做的基于線性表下的查找和排序系統(tǒng),采用順序存儲(chǔ)結(jié)構(gòu),融合了各種查找和排序的算
111、法,簡(jiǎn)單方便,執(zhí)行效率高。</p><p> 不足與改進(jìn):此次課程設(shè)計(jì)由于時(shí)間有限,查找法只做了基于線性表下的查找法,基于樹(shù)的查找和計(jì)算式查找(Hash法查找)沒(méi)有做,課外空余時(shí)間可以再去做做。</p><p> 對(duì)于排序也還有歸并排序沒(méi)有做,留到課外再完善吧。</p><p><b> 五、實(shí)習(xí)體會(huì)與總結(jié)</b></p>
112、<p> 經(jīng)過(guò)這次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì),首先使我對(duì)數(shù)據(jù)結(jié)構(gòu)這門(mén)課更感興趣,也對(duì)編程和這門(mén)課程有了更深入的體會(huì)和認(rèn)知,數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件三者之間的一門(mén)核心課程。這門(mén)課對(duì)于計(jì)算機(jī)類的專業(yè)確實(shí)非常重要,起到舉足輕重的作用,如果想干計(jì)算機(jī)這一行,那這門(mén)課一定要更深入的學(xué)習(xí)才行。其次,通過(guò)這次課程設(shè)計(jì),讓我對(duì)編程方面有了極大的進(jìn)步,自己的程序調(diào)試能力也有了很大的提升,增加了自信。最后通過(guò)這次的課程設(shè)計(jì),更是讓我深
113、刻認(rèn)識(shí)到自己在學(xué)習(xí)中的不足,同時(shí)也找到了克服這些不足的方法,這也是一筆很大的資源。在以后的時(shí)間中,我們應(yīng)該利用更多的時(shí)間去上機(jī)實(shí)驗(yàn),加強(qiáng)自學(xué)的能力,多編寫(xiě)程序,相信不久后我們的編程能力都會(huì)有很大的提高,能設(shè)計(jì)出更多的更有創(chuàng)新的作品。</p><p> 總而言之,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在設(shè)計(jì)過(guò)程中,和同學(xué)們相互探
114、討,相互學(xué)習(xí),相互監(jiān)督。我學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世,這次課程設(shè)計(jì)對(duì)我來(lái)說(shuō)真的受益良多。</p><p><b> 六、參考文獻(xiàn)</b></p><p> 數(shù)據(jù)結(jié)構(gòu)試驗(yàn)教程(C語(yǔ)言版),王青海編著,中國(guó)鐵道部出版社,2012年9月。</p><p> 數(shù)據(jù)結(jié)構(gòu)用C語(yǔ)言描述,耿國(guó)華主編,高等教育出版社,201
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)-線性表輸入,輸出,插入,刪除,查找
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---利用線性表進(jìn)行算式計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)線性表答案
- 線性表數(shù)據(jù)結(jié)構(gòu)試驗(yàn)
- 算法與數(shù)據(jù)結(jié)構(gòu) 線性表答案
- 《數(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ì)報(bào)告--排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---排序綜合
- 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)六 查找與排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—綜合排序的設(shè)計(jì)
- 拓?fù)渑判?算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))
- 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)-線性表基本操作
- 數(shù)據(jù)結(jié)構(gòu) 第2章 線性表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---希爾排序,冒泡排序,快速排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--冒泡排序法
- 數(shù)據(jù)結(jié)構(gòu)排序綜合課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論