【文章內(nèi)容簡介】
t h / 2 ,j , w = 0 , k , c o m = 0 , m o v = 0 。w = 1 。i = w 。w di = i + di L . l e n g t h 。k = i 。j = j + dj = i + d 。j L . l e n g t h 。L . e l e m [ i ] . k e y L . e l e m [ j ] . k e y k = j 。 c o m + + 。i ! = k L . e l e m [ 0 ] . k e y = L . e l e m [ i ] . k e y 。 L . e l e m [ i ] . k e y = L . e l e m [ k ] . k e y 。 L . e l e m [ k ] . k e y = L . e l e m [ 0 ] . k e y 。 m o v + = 3 。w + + 。d = d / 2 。 w = 1 。e n d _ t = c l o c k ( ) 。t 3 = ( d o u b l e ) ( e n d _ t s t a r t _ t ) /C L K _ T C K 。A [ 3 ] = c o m 。 B [ 3 ] = m o v 。 C [ 3 ] = t 3 。輸出c o m , m o v , t 3NYYNNYNYNY 圖 6 希爾排序模塊數(shù)據(jù)結(jié)構(gòu)課程設(shè)計9 快速排序模塊快速排序模塊可實現(xiàn)用快速排序法對數(shù)據(jù)進(jìn)行排序,該模塊具體實現(xiàn)程序流程如圖 7 所示。開始結(jié)束s t a r t _ t = c l o c k ( ) 。 i n t p i v o t k e y 。y d 1 = 0 , b j 1 = 0 。L . e l e m [ 0 ] = L . e l e m [ l o w ] 。 y d 1 + + 。p i v o t k e y = L . e l e m [ l o w ] . k e y 。l o w h i g hy d 1 + + 。l o w h i g h amp。 amp。 L . e l e m [ h i g h ] . k e y = p i v o t k e y h i g h 。L . e l e m [ l o w ] = L . e l e m [ h i g h ] 。 b j 1 + + 。 y d 1 + + 。l o w h i g h amp。 amp。 L . e l e m [ l o w ] . k e y = p i v o t k e y+ + l o w 。L . e l e m [ h i g h ] = L . e l e m [ l o w ] 。b j 1 + + 。 y d 1 + + 。L . e l e m [ l o w ] = L . e l e m [ 0 ] 。 y d 1 + + 。r e t u r n l o w 。 e n d _ t = c l o c k ( ) 。t 4 = ( d o u b l e ) ( e n d _ t s t a r t _ t ) /C L K _ T C K 。輸出 y d 1 ,b j 1 , t 4A [ 4 ] = b j 1 。 B [ 4 ] = y d 1 。 C [ 4 ] = t 4 。YNYNNY圖 7 快速排序模塊數(shù)據(jù)結(jié)構(gòu)課程設(shè)計10 歸并排序模塊歸并排序模塊可實現(xiàn)用歸并排序法對數(shù)據(jù)進(jìn)行排序,該模塊具體實現(xiàn)程序流程如圖 8 所示。開始結(jié)束s t a r t _ t = c l o c k ( ) 。 i n t i = l o w , j = m + 1 , k = l o w 。y d 1 = 0 , b j 1 = 0 。i = m amp。 amp。 j = h i g hR [ i ] . k e y = R [ j ] . k e y b j 1 + + 。 R 1 [ k ] = R [ i ] 。 y d 1 + + 。 i + + 。 k + + 。b j 1 + + ; R 1 [ k ] = R [ j ] 。 y d 1 + + 。 j + + 。 k + + 。i = mR 1 [ k ] = R [ i ] 。 y d 1 + + 。 i + + 。 k + + 。R 1 [ k ] = R [ j ] 。 y d 1 + + 。 j + + 。 k + + 。j = h i g hNYNYYNYNe n d _ t = c l o c k ( ) 。t 5 = ( d o u b l e ) ( e n d _ t s t a r t _ t ) /C L K _ T C K 。輸出 b j 1 ,y d 1 , t 5 圖 8 歸并排序模塊數(shù)據(jù)結(jié)構(gòu)課程設(shè)計11 條形圖模塊條形圖模塊可用星號顯示出各種算法排序的比較結(jié)果,該模塊具體實現(xiàn)程序流程如圖 9 所示。開始結(jié)束l o n g i n t d [ 6 ] 。i n t i , n 。 i = 0 。d [ i ] = s q r t ( A [ i ] / A [ 5 ] ) 。i 5 。n = 0 , i = 0 。 p r i n t f ( \ n 歸并排序 : * ) 。 p r i n t f ( 選擇排序 : ) 。n = 0 , i = 1 。n = d [ i ] 。 p r i n t f ( * )。p r i n t f ( 冒泡排序 : ) 。n = d [ i ] 。p r i n t f ( * ) 。其他排序同理YNNYNYn + +n + +圖 9 條形圖模塊數(shù)據(jù)結(jié)構(gòu)課程設(shè)計125 調(diào)試與測試 調(diào)試調(diào)試過程主要是運行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到的主要問題、原因和解決方法如下面介紹。(1)問題:用條形圖表示時,不能根據(jù)數(shù)據(jù)而表示出星號的多少。解決辦法:選擇要表示的數(shù)據(jù)最小的一種排序作為基數(shù),每種排序所要比較的數(shù)據(jù)可運用數(shù)學(xué)運算計算出是基數(shù)的多少倍,從而輸出幾個星號。(2)問題:輸入數(shù)據(jù)數(shù)目為 2 個時程序運行錯誤。原因:待比較的數(shù)據(jù)為 2 個時,作為基數(shù)的那種排序的數(shù)據(jù)為 0,不能做分母,所以會出現(xiàn)運行錯誤。解決方法:輸入較大的數(shù),使要用條形圖表示出來的數(shù)據(jù)不為 0 即可。 測試軟件測試是軟件生存期中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程” ?;蛘哒f,軟件測試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果) ,并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤或缺陷。過度測試則會浪費許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出了過高的代價。測試數(shù)據(jù)過程如下。 (1) 輸入功能測試輸入數(shù)據(jù) 1:100預(yù)期結(jié)果:輸出各排序算法的比較次數(shù)、移動次數(shù)和排序用時,隨后輸出數(shù)據(jù)比較所對應(yīng)的條形圖。運行結(jié)果:輸出各排序算法的比較次數(shù)、移動次數(shù)和排序用時,隨后輸出數(shù)據(jù)比較所對應(yīng)的條形圖。說明:預(yù)期和運行結(jié)果相同。輸入數(shù)據(jù) 2:25000數(shù)據(jù)結(jié)構(gòu)課程設(shè)計13預(yù)期結(jié)果:輸出各排序算法的比較次數(shù)、移動次數(shù)和排序用時,隨后輸出數(shù)據(jù)比較所對應(yīng)的條形圖。運行結(jié)果:超出范圍重新輸入!說明:不能輸入比 25000 大的數(shù)。(2)輸出功能測試輸入數(shù)據(jù) 1:200預(yù)期結(jié)果:輸出各排序算法的比較次數(shù)、移動次數(shù)和排序用時,隨后輸出數(shù)據(jù)比較所對應(yīng)的條形圖。運行結(jié)果:輸出各排序算法的比較次數(shù)、移動次數(shù)和排序用時,隨后輸出數(shù)據(jù)比較所對應(yīng)的條形圖。說明::預(yù)期和運行結(jié)果相同。輸入數(shù)據(jù) 2:4預(yù)期結(jié)果:輸出各排序算法的比較次數(shù)、移動次數(shù)和排序用時,隨后輸出數(shù)據(jù)比較所對應(yīng)的條形圖。運行結(jié)果:在輸出移動次數(shù)比較的條形圖時出現(xiàn)運行錯誤。說明:不能輸入比 5 小的數(shù)。6 結(jié)論經(jīng)過這一段時間的程序設(shè)計,該課設(shè)任務(wù)書中題目所要求的功能也都一一實現(xiàn)??梢詡坞S機(jī)產(chǎn)生不同的數(shù)據(jù),六種內(nèi)部排序算法對其數(shù)據(jù)進(jìn)行排序,記錄比較次數(shù)、移動次數(shù)和排序用時,并用條形圖直觀的表示出不同算法的優(yōu)劣。不過本程序還可以添加細(xì)節(jié),例如:可輸出個選擇排序方法的菜單,挑選不同排序方法對數(shù)據(jù)進(jìn)行比較,也可以再循環(huán)選擇并用條形圖表示出來。結(jié)束語為期兩個星期的課程設(shè)計終于順利完