冒泡排序真題_第1頁
冒泡排序真題_第2頁
冒泡排序真題_第3頁
冒泡排序真題_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、16. 【加試題】n個(gè)數(shù)據(jù)的冒泡排序需要經(jīng)過n-1遍加工,每一遍加工自下而上比較相鄰兩個(gè)數(shù)據(jù),把較小者交換到上面。小劉發(fā)現(xiàn):當(dāng)某一遍加工過程中沒有數(shù)據(jù)交換,說明數(shù)據(jù)已經(jīng)有序,無需進(jìn)一步加工。為此,小劉對算法進(jìn)行優(yōu)化,編寫了一個(gè)VB程序,功能如下:運(yùn)行程序時(shí),在列表框List1中顯示排序前數(shù)據(jù),單擊“排序”按鈕Commaiid1,在列表框List2 中顯示這些數(shù)據(jù)按升序排序后的結(jié)果,在標(biāo)簽Label3中顯示排序過程的加工遍數(shù)。運(yùn)行效果如第16題圖所示。實(shí)現(xiàn)上述功能的VB代碼如下,但加框處代碼有錯(cuò),請改正。Dim a(1 To 8) As IntegerDim n As IntegerPrivat

2、e Sub Form_Load()'n=8,排序前數(shù)據(jù)存儲(chǔ)在數(shù)組a中,并在列表框Listl中顯示 '代碼略End SubPrivate Sub Command1_Click()Dim flag As Boolean 'flag值為True表示一遍加工中發(fā)生過交換i = 1flag = TrueDo While '(1) i <= n - 1 Or flag = True flag = False For j = n To i + 1 Step -1 If a(j) < a(j - 1) Then k = a(j): a(j) = a(j - 1):

3、a(j - 1) = k flag = True End If Next j i = i + 1LoopStr(i)Label3.Caption = "排序過程的加工遍數(shù)為" + '(2)For i = 1 To n List2.AddItem Str(a(i)Next iEnd Sub第16題圖16【加試題】小吳為了研究冒泡排序過程中數(shù)據(jù)的“移動(dòng)”情況,編寫了一個(gè)VB程序,功能如下:在列表框List1中顯示排序前數(shù)據(jù)(存儲(chǔ)在數(shù)組a中),在文本框Text1中輸入初始位置(即下標(biāo)值),單擊“排序”按鈕Command1后,在標(biāo)簽Label1中顯示指定初始位置的數(shù)據(jù)在排序

4、過程中的位置變化情況,排序后的數(shù)據(jù)顯示在列表框List2中。程序運(yùn)行界面如圖所示。實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請改正。Dim a(1 To 8) As IntegerDim n As IntegerPrivate Sub Form_Load()a(1) = 30: a(2) = 47: a(3) = 30: a(4) = 72a(5) = 70: a(6) = 23: a(7) = 99: a(8) = 24n = 8For i = 1 To 8List1.AddItem a(i)Next iEnd SubPrivate Sub Command1_Click()Dim i A

5、s Integer, j As Integer, k As IntegerDim pos As IntegerDim s As Strings = Text1.Textpos = Val(Text1.Text)For i = 1 To n - 1For j = n To i + 1 Step -1If a(j) < a(j - 1) Then k = a(j)a(j - 1) = a(j)a(j) = k'如果pos位置的數(shù)據(jù)參與交換,則更新pos值,記錄pos變化位置If pos = j Then pos = j - 1s = s + "" + Str(po

6、s) Elsepos = js = s + "" + Str(pos)End IfEnd IfNext jNext iLabel1.Caption = "位置變化情況:" + s數(shù)組元素?cái)?shù)組元素的含義a(1)存儲(chǔ)班級數(shù)na(2)從a(2)到a(n+1) 依次存儲(chǔ)第1、2、第n個(gè)班級人數(shù)a(n+1)a(n+2)從a(n+2) 依次存儲(chǔ)第1班每個(gè)學(xué)生的單科成績、第2班每個(gè)學(xué)生的單科成績、第n班每個(gè)學(xué)生的單科成績 For i = 1 To nList2.AddItem Str(a(i)Next iEnd Sub16【加試題】小李基于冒泡排序算法編寫了一個(gè)VB程

7、序,功能如下:在文本框Text1中顯示排序前的數(shù)據(jù),單擊“排序”按鈕Command1,在文本框Text2中顯示剔除重復(fù)數(shù)據(jù)后的升序排序結(jié)果。程序運(yùn)行界面如下圖所示。實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請改正。Const n = 10Dim a(1 To n) As IntegerPrivate Sub Command1_Click()Dim i As Integer, j As Integer, t As IntegerDim bottom As Integer'獲取排序前數(shù)據(jù)依次存儲(chǔ)在數(shù)組a中,并在文本框Text1中顯示。代碼略bottom = ni = 1Do While i <= bottom - 1 For j = bottom To i + 1 Step -1 If a(j) < a(i) Then t = a(j): a(j) = a(j - 1): a(j - 1) = t ElseIf a(j) = a(j - 1) Then ' 相鄰兩個(gè)數(shù)據(jù)相等,進(jìn)行剔除處理 a(bottom)=a(j) bottom = bottom - 1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論