【正文】
a[i]。 i 26。 msd(temp[i], power)。 j 。排序算法動態(tài)演示系統(tǒng)功能模塊結(jié)構(gòu)圖如圖 所示。i n t j = i 2 。l o w = 1 , h i g h = i 1 。h i g h = m 1 。j ! = it e m p = s r c [ i ] 。 陜西理工學(xué)院畢業(yè)設(shè)計 第 17 頁 共 80 頁 開 始l o w h i g h初 始 化p i v o t l o c = p a r t i t i o n ( l , l o w , h i g h ) 。p i v o t k e y = l [ l o w ] 。結(jié) 束YYNNl o w h i g h amp。 amp。 amp。i + + 。 陜西理工學(xué)院畢業(yè)設(shè)計 第 19 頁 共 80 頁 開 始j t amp。n u m [ i ] = n u m [ j ] 。 開 始i n o d e s .l e n g t h初 始 化q = 0 。n o d e s [ q ] . s e t N e x t ( i ) 。o r d e r [ p o s ] + + 。 amp。 AccessoryPanel(右邊JPanel )中加入 JList ,通過 (int[] i) 完成代碼跟隨。 ().setUnits(units)。 for (。 } 折半插入排序 將字符串?dāng)?shù)組封裝為 VectorUnit,同時利用 GUI 在 ContentPanel(中間 JPanel)中繪制數(shù)據(jù);將 () 切入到排序代碼中,完成數(shù)組拷貝與賦值;initUnits(units,low,high)切入到排序代碼中完成 折半查找過程的繪制 。實現(xiàn)代碼如下: public void binaryInsertionSortToShow(String[] src, int index) { units = (src)。 //代碼跟隨 ().setSelectIndexs(new int[]{2})。 while (low = high) { ......找出插入位置 } ().repaint()。 AccessoryPanel(右邊 JPanel)中加入 JList,通過 (int[] i)完成代碼跟隨。 // 獲取顯示數(shù)據(jù) ().setUnits(units)。 src[index] = src[j]。 } } 快速排序 將字符串?dāng)?shù)組封裝為 VectorUnit,同時利用 GUI 在 ContentPanel(中間 JPanel)中繪制數(shù)據(jù);將 ()切入到排序代碼中,完成數(shù)組拷貝與賦值。實現(xiàn)代碼如下: public int partitionToShow(String[] l,int low,int high) { (500)。 //顯示內(nèi) 存處理 陜西理工學(xué)院畢業(yè)設(shè)計 第 23 頁 共 80 頁 //軸記錄關(guān)鍵字 String pivotkey = l[low]。 AccessoryPanel(右邊 JPanel)中加入 JList,通過 (int[] i)完成代碼跟隨。 //臨時數(shù)據(jù)存儲 VectorUnit tmpUnits = new VectorUnit(ts+1)。 for(。k++) { ......將 sr[i...m] 和 sr[j...t]歸并 }//for end if(i = m) //將剩余的 sr[i...m]復(fù)制到 tmp中 { ......將剩余的 sr[i...m]復(fù)制到 tmp中 }//if end if(j = t) //將剩余的 sr[j...t]復(fù)制到 tmp中 { .....將剩余的 sr[j...t]復(fù)制到 tmp中 }//if end (tmp, 0, sr, s, )。將 moveArrows()切入到排序代碼中, 完成 箭頭的移動 ; flashNext()切入到排序代碼中 完成 next 索引選擇處理效果 。實現(xiàn)代碼如下: public void updateNextToShow(Node[] nodes, int i, int ibefore) { ......初始化 i、 q、 p while ((nodes[i].getValue()).pareTo( (nodes[p].getValue())) 0) { ......找出插入的位置 } //代碼跟隨 ().setSelectIndexs(new int[]{8})。 //代碼跟隨 ().setSelectIndexs(new int[]{9})。 } 堆排序 將字符串?dāng)?shù)組封裝為 VectorUnit,同時利用 GUI 在 ContentPanel(中間 JPanel)中繪制數(shù)據(jù)。該方法切入到排序代碼完成排序算法每一步實現(xiàn)效果。 j = 2 * j) { if (j t amp。 //代碼跟隨 ().setSelectIndexs(new int[]{7,8,9})。 (units, j1, i1)。將 ()切入到排序代碼中, 完成單元到臨時數(shù)組的拷貝動畫 。實現(xiàn)代碼如下: public void msdToShow(String[] data, int power, int isGo,int index) { ......初始化顯示數(shù)據(jù) int pos = 0。 i++) { if (data[i] == null || .equals(data[i])) break。 } //代碼跟隨 ().setSelectIndexs(new int[]{15})。 (30)。 (30)。 圖 直接插入排序過程界面 圖 直接排序運行結(jié)果 點擊 折半插入排序 按鈕,并點擊開始按鈕,進入 折半 直接插入排序過程界面如圖 所示,運行結(jié)果界面如圖 所示。 陜西理工學(xué)院畢業(yè)設(shè)計 第 30 頁 共 80 頁 圖 歸并排序運行狀態(tài) 圖 歸并排序運行結(jié)果 點擊 堆排序 按鈕,并點擊開始按鈕,進入 堆排序 過程界面如圖 所示,運行結(jié)果界面如圖 所示。這八種算法中,快速排序比較和移動的次數(shù)是最少的。 通 過畢業(yè)設(shè)計的鍛煉,學(xué)到了很多東西: ① 鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。 ⑤ 通過畢業(yè)設(shè)計,培養(yǎng)了我嚴肅認真的作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。 最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝! 陜西理工學(xué)院畢業(yè)設(shè)計 第 36 頁 共 80 頁 參考文獻 [1] 嚴蔚敏 ,吳偉民 .《數(shù)據(jù)結(jié)構(gòu)( C語言版)》 [M].北京: 清華大學(xué)出版社 ,20xx. [2] 朱戰(zhàn)立 .《數(shù)據(jù)結(jié)構(gòu)( C 語言版)》 [M].陜西: 西安交通大學(xué)出版社 ,. [3] 朱繼紅 .數(shù)據(jù)結(jié)構(gòu)算法動態(tài)示系統(tǒng)的設(shè)計與實現(xiàn) [J].信息工程學(xué)院學(xué)報 ,. [4] 張彬連 .數(shù)據(jù)結(jié)構(gòu)課程教學(xué)研究與改革 [J].計算機教育 ,. [5] 李鵬宇 .計算機開發(fā)與數(shù)據(jù)結(jié)構(gòu)模型應(yīng)用探究 [J].電子制作 ,. [6] 吳理華 .數(shù)據(jù)結(jié)構(gòu)課程設(shè)計教學(xué)過程的探索研究 [J].電腦知識與技術(shù) , [7] 林銳 ,韓永泉著 .《高質(zhì)量程序設(shè)計指南 —— C++/C 語言》 [M].北京: 電子工業(yè)出版社 ,20xx. [8] Bruce Eckel.《 Java 編程思想》 [M].北京: 機械工業(yè)出版社 ,. [9] Lan Sommerville.《軟件工程》 [M].北京: 機械工業(yè)出版社 ,. [10] 王克宏 ,董麗 ,朱家維 .《 Java 技術(shù)及其應(yīng)用》 [M].北京: 高等教育出版社 ,. [11] Mark Allen Weiss.《數(shù)據(jù)結(jié)構(gòu)與算法分析》 [M].北京: 機械工業(yè)出版社 ,20xx. [12] 蘇小紅 ,陳惠鵬 ,孫志崗 .《 C語言大學(xué)實用教程》 [M].北京: 電子工業(yè)出版社 ,20xx. [13]劉振安 .《 C語言程序設(shè)計》 [M].北京: 機械工業(yè)出版社 ,20xx. [14]R A Finkel,J L Trees A Data Structure for Retrieval on Composite Keys[J].Acta Informatica,. [15]J L Bentley,J H Structures for Rang。 陜西理工學(xué)院畢業(yè)設(shè)計 第 35 頁 共 80 頁 致謝 本文是在 指導(dǎo)老師的大力幫助 完成的,他們淵博的知識和嚴謹?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完成本系統(tǒng)起到了極大的作用。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。堆排序和快速排序差不多,屬于同一個數(shù)量級。 陜西理工學(xué)院畢業(yè)設(shè)計 第 32 頁 共 80 頁 圖 鏈表排序運行狀態(tài) 圖 鏈表排序運行結(jié)果 點擊 基數(shù)( MSD)排序 按鈕,并點擊開始按鈕,進入 基數(shù)( MSD)排序 過程界面如圖 所示,運行結(jié)果界面如圖 所示。 陜西理工學(xué)院畢業(yè)設(shè)計 第 28 頁 共 80 頁 圖 快速排序運行狀態(tài) 圖 快速排序運行結(jié)果 點擊 選擇排序 按鈕,并點擊開始按鈕,進入 選擇排序 過程界面如圖 所示,運行結(jié)果界面如圖 所示。 if (isGo = 0) { msdToShowForLast(data, temp,index)。 //代碼跟隨 ().setSelectIndexs(new int[]{16})。 temp[pos][order[pos]] = data[i]。 if (power ()) { pos = (int) (power) 97。 for (int i = 0。將 ().setSelectIndexs(new int[]{})。 } (0)。 num[i] = num[j]。 (num[j]).pareTo( (num[j + 1]))0) j = j + 1。 for (int j = 2 * i。 AccessoryPanel(右邊 JPanel)中加入 JList,通過 (int[] i)完成代碼跟隨。 // q next修改 nodes[i].setNext(p)。 // q next修改 nodes[q].setNext(i)。將 ().setSelectIndexs(new int[]{})。 movingUnitList(units,tmpUnits,s,t)。amp。 int i=s, k = 0,j = m+1。該方法切入到排序代碼完成排序算法每一步實現(xiàn)效果。 //從表的兩端交替向中間掃描 while(low high) { ......從表的兩端交替向中間掃描 } ......將 l[0]插入到指定位置 return low。 //代碼跟隨 ().setSelectIndexs(new int[]{1})。將().setSelectIndexs(new int[]{})。 //代碼跟隨 ().setSelectIndexs(new int[]{3,4,5})。 int j = selectMinKeyToShow(src, index)。該方法切入到排序代碼完成排序算法每一步實現(xiàn)效果。 j = high + 1。 // 初始化 Units initUnits(units, low, high)。 //將 src[i]暫存在 src[0] src[0] = src[index]。將().setSelectIndexs(new int[]{})。 j) { //找出插入位置 } src[j + 1] = src[0]。 //數(shù)組拷貝及 代碼跟隨 src[index] = src[index 1]。該方法切入到排序代碼完成排序算法每一步實現(xiàn)效果。YYNNi 2 6