數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告排序算法_第1頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告排序算法_第2頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告排序算法_第3頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告排序算法_第4頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告排序算法_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、排序算法驗(yàn)證及評(píng)價(jià)實(shí)驗(yàn)報(bào)告班級(jí):10020801 姓名:吳亮 學(xué)號(hào):2008302651 電話: 日期:2010.1.8(一) 需求分析1、輸入輸出的形式: 根據(jù)題目要求與提示輸入以文件名,并用你選擇的排序進(jìn)行排序,再編輯以文件名,把你的排好序的文件放入該文件。2、程序所能達(dá)到的功能: 程序?qū)δ愕奈募锏臄?shù)據(jù)進(jìn)行排序。3、測試數(shù)據(jù): 打開你編輯的文件,查看文件是否已排序。 (二) 概要設(shè)計(jì)一,前五種排序:1 基本操作:(1)快速排序函數(shù)int partions(int l,int low,int high); 交換順序表中l(wèi)low.high的記錄,使樞軸記錄到位,并返回請(qǐng)其所在位置,此時(shí)在它之

2、前(后)的記錄均不大(?。┯谒?,返回low值void qsort(int *l,int low,int high); 交換順序表中l(wèi)low.high的記錄,使樞軸記錄到位,并返回請(qǐng)其所在位置,此時(shí)在它之前(后)的記錄均不大(?。┯谒黺oid qsort(int *l,int low,int high) 對(duì)順序表l中的子序列l(wèi)low.hing作快速排序 (2)希爾排序函數(shù)void ShellInsert(int *L,int dk); 對(duì)順序表做一趟希爾排序void ShellSort(int *L, int dlta, int t); 按增量序列dlta0.t-1對(duì)順序表l做希爾排序(3)錦標(biāo)

3、賽排序函數(shù)void UpdateTree(int *tree, int *active, int pos); 建立具有最大根的樹void TournamentSort(int *array, int length); 對(duì)array進(jìn)行錦標(biāo)賽排序(4)堆排序函數(shù)void HeapAdjust(int h, int s, int m); 已知hs.m中記錄的關(guān)鍵字除hs之外均滿足堆的定義,本函數(shù)調(diào)整hs的關(guān)鍵字,使hs.m成為一個(gè)大頂堆void heapsort(int h);對(duì)順序表h進(jìn)行堆排序 (5)歸并排序void Merge(int array, int first, int mid, i

4、nt last); 將有序表的SRi.m和SRm+1.n歸并為有序的TRi.n void _MergeSort(int *array, int first, int last); 將SRs.t歸并排序?yàn)門R1s.tvoid MergeSort(int *array, int length); 對(duì)順序表l進(jìn)行排序2、        模塊調(diào)用圖:main()void qsort(int *l,int low,int high)void ShellSort(int *L, int dlta, int t);void Tournam

5、entSort(int *array, int length)void heapsort(int h)void MergeSort(int *array, int length)int partions(int l,int low,int high);void ShellInsert(int *L,int dk)void UpdateTree(int *tree, int *active, int pos)void HeapAdjust(int h, int s, int m)void Merge(int array, int first, int mid, int last)void _Me

6、rgeSort(int *array, int first, int last)                   二,基數(shù)排序(1)本實(shí)驗(yàn)用到了鏈表結(jié)構(gòu)類型。typedef struct /靜態(tài)鏈表的結(jié)點(diǎn)類型long keysMAX_NUM_OF_KEY;long key0;int next;SLCell;typedef struct /靜態(tài)鏈表類型SLCell *r;int keynum;long recnum

7、;SLList;(2)實(shí)驗(yàn)基本操作:void CreatList_Sq(SLList &L,long k,long *a,long *b) 構(gòu)造一個(gè)的靜態(tài)鏈表。void RadixSort(SLList &L) L是采用靜態(tài)鏈表表示的順序表對(duì)L作基數(shù)排序,使得L成為按關(guān)鍵字自小到大的有序靜態(tài)鏈表,L.r0為頭結(jié)點(diǎn)void Distribute(SLCell *r,int i,ArrType &f,ArrType &e) 靜態(tài)鏈表L的r域中記錄已按(key0,.,keyi-1)有序,本算法按第i個(gè)關(guān)鍵字keyi建立RADIX個(gè)子表,使同一子表中記錄的keysi相同

8、,f0.RADIX-1和e0.RADIX-1分別指向各子表中第一個(gè)和最后一個(gè)記錄void Collect(SLCell *r,int i,ArrType &f,ArrType &e) 本算法按keysi自小而大地將f0.RADIX-1所指各子表依次連接成一個(gè)鏈表,e0.RADIX為各子表的尾指針(3)模塊調(diào)用分析:main()void CreatList_Sq(SLList &L,long k,long *a,long *b)void RadixSort(SLList &L)void Distribute(SLCell *r,int i,ArrType &

9、;f,ArrType &e)void Collect(SLCell *r,int i,ArrType &f,ArrType &e) (四) 程序使用說明及測試結(jié)果1   程序使用說明(1)         本程序的運(yùn)行環(huán)境為VC6.0。(2)         進(jìn)入演示程序后即顯示提示信息:先選擇排序類型(前五種排序在第一個(gè)程序里輸入相應(yīng)的數(shù)字,基數(shù)排序直接進(jìn)入第二個(gè)程序) ,再輸入文件名,如:

10、data01.txt,待文件排序完成后,輸入輸出的文件名,這樣排序后的數(shù)據(jù)就存儲(chǔ)在輸出文件中。在進(jìn)行希爾排序時(shí),在輸入文件名后,還得根據(jù)提示輸入你想要排序的趟數(shù),以及每趟排序的增量。運(yùn)行界面:3   調(diào)試中的錯(cuò)誤及解決辦法。(遇到時(shí)給出) 調(diào)試過程中,遇到了許多的問題,如:一開始直接用靜態(tài)數(shù)組作為存儲(chǔ)結(jié)構(gòu),結(jié)果在文件較大時(shí),由于存儲(chǔ)空間過小,系統(tǒng)崩潰。在同其他同學(xué)討論后,我改用指針動(dòng)態(tài)分配數(shù)組的存儲(chǔ)空間。還有,在寫錦標(biāo)賽排序時(shí),由于教材沒有直接給出算法,導(dǎo)致我花了相當(dāng)長的時(shí)間來思考和調(diào)試該算法。 (五)、實(shí)驗(yàn)總結(jié)(實(shí)驗(yàn)心得)你在編程過程中花時(shí)多少?零散的時(shí)間全部加上,大概有15-6個(gè)小時(shí)。多少時(shí)間在紙上設(shè)計(jì)?大概兩個(gè)多小時(shí)。多少時(shí)間上機(jī)輸入和調(diào)試?13到14個(gè)小時(shí)。多少時(shí)間在思考問題?不知道,一兩個(gè)吧。遇到了哪些難題?調(diào)試過程中,遇到了許多的問題,如:一開始直接用靜態(tài)數(shù)組作為存儲(chǔ)結(jié)構(gòu),結(jié)果在文件較大時(shí),由于存儲(chǔ)空間過小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論