【正文】
:=j1),找到小于 key 的數(shù)據(jù),兩者交換; ( 4)、從變量 i 向后搜索,即由左至右的搜索 (i:=i+1),找到大于 key 的數(shù)據(jù),兩者交換; ( 5)、重復排序步驟( 3)和( 4),直到 i=j。 假設要排序的數(shù)列為 A[1]?? A[N],我們首先要取一個數(shù)據(jù)作為關鍵數(shù)據(jù),一般情況下都是取第一個數(shù)據(jù)為關鍵數(shù)據(jù)。 基準對象則排在這兩個子序列中間。在選擇排序算法的過程中,所需進行記錄移動的造作次數(shù)比較少,但是,無論記錄的初始排列如何,所需進行記錄關鍵字間的比較次數(shù)均為n(n1)/2。即第二遍比較時范圍就從第 2 個數(shù)一直到第 N 個數(shù),在此范圍內(nèi)找最小的數(shù)的位置 P,然后把 A[P]與 A[2]對調(diào),這樣從第 2個數(shù)開始到第 N 個數(shù)中最小數(shù)就在 A[2]中了,第三遍就從第 3個數(shù)到第 N個數(shù)中去找最小的數(shù),再把 A[P]與 A[3]對調(diào)??此過程重復 N1 次后,就把 A 數(shù)組中 N 個數(shù)按從小到大的順序排好了。在依次一一比較后, P 就指向 N 個數(shù)中最小的數(shù)所在位置,即 A[P]就是 N 個數(shù)中最小的那個數(shù); ( 3)、把 A[P]和 A[1]的數(shù)對調(diào),那么最小的數(shù)就在 A[1]中去了,也就是在最前面了。算法的步驟如下: ( 1)、先從 A[1]開始向后檢查,檢查出在 A[1]后面 的最小數(shù)的位子,我們設此位子為 A[P]。待到第 n2 趟作完,待排序?qū)ο笾皇O?1 個,就不用再選了。 例如:一組待排序數(shù)列為: 圖 31 待排序組 根據(jù)算法思路( 1)第一次對比后無變化; 根據(jù)算法思路( 1)第二次對比發(fā)生變化:由于 A[2]=8 A[3]=5,所以兩者交換 圖 32 第一次交換 根據(jù)算法思路( 1)第三次對比發(fā)生變化:由于 A[3]=8 A[4]=4,所以兩者交換 圖 33第二次交換 根據(jù)算法思路( 1)第四次對比無變化; 根據(jù)算法思路( 1)第五次對比發(fā)生變化:由于 A[5]=9 A[6]=7,所有兩者交換 圖 34第三次交換 到此第一輪的排序結束,根據(jù)算法思路( 2),重新對以交換排列后的數(shù)列6 5 4 8 7 9 6 5 4 8 9 7 6 5 8 4 9 7 6 8 5 4 9 7 第 4 頁 共 21 頁 進行排序直到?jīng)]有變化為止,生成最后的序列: 圖 35最后有序序列 分析冒泡排序法的效率,若記錄一開始就是從大到小排列,則一次循環(huán)就能完成排序;若記錄是“逆序”排列的,即是沖小到大的排列,則需 n1 次循環(huán)( n為需要排序的記錄總數(shù)),共 n(n1)/2 次比較和交換。即,如果在一次比較中,如果 A[1]比 A[2]大的情況下,把 A[1]和 A[2]交換, ?? 以此類推,直到一輪 A[N1]和 A[N]比較完。即把 A[1]和 A[2]比較,對比完后把 A[2]和 A[3]進行比較, ?? 直到 A[N1]和 A[N]比較完為止。整個過 冒泡排序 選擇排序 同時進行 動態(tài)演示排序系統(tǒng) 快速排序 第 3 頁 共 21 頁 程就有點象水中的氣泡上升的過程,輕的往上浮,重的向下沉,這個算法的名字也就由此得來。比較一輪結束之后,關鍵字大的記錄均向前移動。 系統(tǒng)的總體規(guī)劃 本系統(tǒng)的總體結構如圖 21 所示: 圖 21 系統(tǒng)總體結構 3 系統(tǒng)設計思想 冒泡算法及思想 冒泡排序算法的基本思想:冒泡法的原理很簡單,基本思想就是比較相臨的兩個記錄的關鍵字, 若前者比后者小則交換,若前者比后者大則保持不變。而且本系統(tǒng)在開發(fā)過程中,能夠用鼠標點擊按鈕和拖放圖形化的對象,修改他們的屬性和行為過程。在 Visual C++ 中能夠進行多種操作,它的特點就是能夠把原來抽象的數(shù)字、表格、功能邏輯等用直觀的圖形、圖象的形式表現(xiàn)出來。 本系統(tǒng)的軟件環(huán)境:操作系統(tǒng) Windows XP,Visual C++ 中文版。本系統(tǒng)設定的情況為,記錄關鍵字都為整數(shù),排序的結果是從大到小的排列,用到的三種排序算法為:冒泡排序法、選擇排序法、快速排序法。因此我們必須根據(jù)需要處理數(shù)據(jù)的特點來選擇合適的算法。而算法則是以一組值或者一個值的集合作為輸入 ,經(jīng)過一系列計算得到的一組值作為輸出的過程,即是指那一系列將輸入轉(zhuǎn)化為輸出的計算過程。運用 VC 編程語言,把一個程序中的算法和程序框架有效的結合起來,并且實現(xiàn)排序算法的動態(tài)演示。優(yōu)秀的算法還能幫助我們在互聯(lián)網(wǎng)上快速找到最好的發(fā)送數(shù)據(jù)路線,以及怎么用搜索引擎來快速地找到信息所在的頁面。因此,利用計算機的高速運用和計算能力,編寫出一種合適的排序軟件,能十分快捷的給我們在信息交流和查詢帶來便利。再加上現(xiàn)在信息產(chǎn)業(yè)的迅速發(fā)展,信息的流通量越來越大,如此龐大并且雜亂無章的信息數(shù)據(jù)十分難以管理和查詢,就更加需要一種十分快捷而有效的編排手段來整理這些數(shù)據(jù)信息,讓我們的工作效率得 以提高。 Sorting Algorithm。其目的是為了讓我們在使用計算機處理規(guī)模越來越大的數(shù)據(jù)問題上,能夠清楚什么樣的算法適合當前的處理系統(tǒng)。本系統(tǒng)是為了 演示在同一問題上,不同的算法在效率上存在的巨大差異。 畢業(yè)設計 ( 論文 ) 多種排序算法動態(tài)演示軟件的設計與開發(fā) 論文作者姓名: 申請學位專業(yè): 申請學位類別: 指導教師姓名(職稱): 論文提交日期: 多種排序算法動態(tài)演示軟件的設計與開發(fā) 摘 要 隨著計算機科學技術的不斷提高和發(fā)展,其強大的運算功能已經(jīng)逐漸融入人類社會的各個領域,并且在各個領域中發(fā)揮越來越重要的作用。當然,高效的運算速度并不代表無限快,在有限的資源空間里,要大大提高運算處理數(shù)據(jù)的速率,就需要我們使用那些在時間和空間上體現(xiàn)出高效的算法。本系統(tǒng)采用 Visual C++ 中文版為開發(fā)工具,實現(xiàn)三種不同排序算法,即:冒泡排序算法、選擇排序算法和快速排序算法,以及這三種排序?qū)ν粏栴}的處理并且以圖形的形式給出快慢比較,實現(xiàn)排序算法的動態(tài)演示 。 關鍵詞 : Visual C++;排序算法;動態(tài)演示The Design and Development of Dynamic Sorting Algorithm Demo Abstract With puter science and technology improvement and development, its powerful puting has gradually integrate into human society in various fields, and play an increasingly important role. Of course, efficient putational speed does not mean unlimited fast, and the limited resources of space, Operators must significantly improve processing speed, we need to use the time and space reflects efficient algorithms. The system is to demonstrate on the same issues in different algorithm efficiency in the enormous difference. The system uses Visual C ++ for the development of the Chinese version of tools to achieve three different sorting algorithms, namely : The Bubble Sorting Algorithm, The Select Sorting Algorithm and The Quick Sorting Algorithm, and three ranking on the same issue to deal with and the graphics are presented in the form of speed, Sorting Algorithm to achieve the dynamic presentation. Its purpose is that enable us to use puters to handle the increasingly large scale data problems, to know what kind of algorithm is suitable for the current system. Key words: Visual C ++ 。 Dynamic Demonstration 目錄 論文總頁數(shù): 21 頁 1 引言 ................................................................... 1 系統(tǒng)背景 ........................................................... 1 系統(tǒng)開發(fā)的意義 ...................................................... 1 系統(tǒng)開發(fā)的相關技術 .................................................. 1 系統(tǒng)開發(fā)的相關概念 .................................................. 1 2 系統(tǒng)需求及分析 ......................................................... 2 系統(tǒng)需求 ........................................................... 2 系統(tǒng)開發(fā)環(huán)境 選擇 .................................................... 2 系統(tǒng)的總體規(guī)劃 ...................................................... 2 3 系統(tǒng)設計思想 ........................................................... 2 冒泡算法及思想 ...................................................... 2 選擇算法及思想 ...................................................... 4 快速算法及思想 ...................................................... 5 4 詳細設計 ............................................................... 8 系統(tǒng)的文件的組織 .................................................... 8 動態(tài)演示冒泡算法模塊設計 ............................................ 8 動態(tài)演示選擇算法模塊設計 ........................................... 11 動態(tài)演示快速算法模塊設計 ........................................... 13 同時比較三種算法模塊設計 ........................................... 16 系統(tǒng)的測試 ........................................................ 16 系統(tǒng)的特點 ........................................................ 18 結 論 .................................................................. 19 參考文獻 .................................................................. 19 致 謝 .................................................................. 20 聲 明 ................................................................... 0 第 1 頁 共 21 頁 1 引言 系統(tǒng)背景 由于排序在計算機圖形、計算機輔助設計、機器人、模式識別、基因排序工程及統(tǒng)計學等領域具有廣泛應用,所以對排序的研究既有理論上的重要意