2022年VB冒泡排序?qū)n}_第1頁
2022年VB冒泡排序?qū)n}_第2頁
2022年VB冒泡排序?qū)n}_第3頁
2022年VB冒泡排序?qū)n}_第4頁
2022年VB冒泡排序?qū)n}_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、VB 冒泡排序?qū)n} 班級(jí) 姓名學(xué)問點(diǎn)回憶:1、冒泡排序的特點(diǎn):從后往前兩兩比較數(shù)據(jù),不符合大小關(guān)系的兩數(shù) 2、關(guān)于冒泡需懂得:交換 至達(dá)到要求; 升序:將后數(shù)小于前數(shù)的兩個(gè)數(shù)進(jìn)行交換;降序:將后數(shù)大于前數(shù)的兩數(shù)進(jìn)行交換; N 個(gè)數(shù)最多進(jìn)行 N-1 遍排序;兩數(shù)比較的次數(shù)最多為 N*N-1/ 2;兩數(shù)交換次數(shù)最多為:N*N-1/ 2; 冒泡有很多改進(jìn)算法,在練習(xí)中要加強(qiáng)懂得和記錄;3、冒泡經(jīng)典代碼: 以降序 為例 for i=1 to n- 1 變量 i 把握遍數(shù) n-1 for j=n to i+1 step -1 把握每次比較次數(shù) n-i 和方向if djdj-1 then 不中意降序(后項(xiàng)

2、 前項(xiàng))就交換temp=dj : dj=dj-1 :dj-1=tempend ifnext jnext ifor i=1 to n-1 for j=n-1 to i step -1 理論上而言, 只需把握每次比較次數(shù) n-i 即可if djdj+1 then 依據(jù) j 的初值和終值判定是 j+1 仍是 j-1temp=dj : dj=dj+1 :dj+1=tempend ifnext jnext i冒泡經(jīng)典算法默認(rèn)數(shù)據(jù)從后往前冒,第一次比較的兩個(gè)數(shù)確定是 an與 an-1,確定是先把最值放 a1中;而事實(shí)上冒泡也可以從前往后冒,第一次比較的兩個(gè)數(shù)確定是 a1與 a2,確定是先把最值放在 an中

3、;for i=n-1 to 1 step -1 變量 i 把握遍數(shù) n-1 for i=n-1 to 1 step -1 for j= 1 to i for j= 2 to i+1 把握比較次數(shù) n-i 和方向if djdj-1 then temp=dj : dj=dj+1 :dj+1=temptemp=dj : dj=dj-1 :dj-1=tempend if end ifnext j next jnext i next i4、字符串的排序:可以排序,依據(jù)字符的 ASCII碼; 從第一個(gè)字符開頭比較,直到比出大小,即當(dāng)字符串第一個(gè)字符一樣時(shí),依據(jù)其次個(gè)字母的 ASCII碼排 ,以此類推; 例

4、: “bcd” 大于“ adb” ,“ efad” 小于“ efcd” ;鞏固練習(xí):1、在運(yùn)動(dòng)會(huì)上, 男生第一組 6 位選手的百米成果(單位: 秒)分別是 “ 13.4、12.3、11.2、13.8、13.1、11.0” ,如使用冒泡排序法將該組的成果按第一名、其次名、第三名 的次序排序,就第一遍排序后的次序是();兩遍排序后的次序是() ; A. 11.0 11.2 13.8 13.4 12.3 13.1 B.11.0 12.3 11.2 13.8 13.1 13.4 C. 11.0 11.2 13.4 12.3 13.1 13.8 D.11.0 13.4 12.3 11.2 13.8 13

5、.1 2、有一組 10 個(gè)數(shù)據(jù)的無序序列,利用冒泡排序算法進(jìn)行從小到大的排序,需要比較的次數(shù)和最多交換的次數(shù),最多需要進(jìn)行加工的遍數(shù)分別為()A. 9,45,9 B. 45,15,9 C.45,45,9 D.15,45,8 3、在 NBA某賽季中,快船隊(duì) 5 場競賽得分依次為 97,89,111,70,90,如接受冒泡排序算法對其進(jìn)行從小到大排序,在整個(gè)排序過程中,數(shù)據(jù) 97 被交換的次數(shù)是 A 1 次 B2 次 C 3 次 D4 次4、對儲(chǔ)備在 stu 0 to n 中的 n+1 個(gè)元素用冒泡排序算法進(jìn)行排序,元素交換次數(shù)的范疇和元素比較次數(shù)的值分別為()A、0 , n ,(n-1 )*n/

6、2 B C、0 ,(n+1)*n/2 ,( n+1)*n/2 D、1 ,( n+1) *n/2 ,(n-1 )*n/2 、1 ,n-1 ,(n+1)*n/2 5、以下關(guān)于排序的算法,不正確選項(xiàng)() A 對 N 個(gè)數(shù)組元素進(jìn)行排序,冒泡排序和選擇排序排序的遍數(shù)一樣 B 對 N 個(gè)數(shù)組元素進(jìn)行排序,冒泡排序和選擇排序比較的次數(shù)一樣 C對 N 個(gè)數(shù)組元素進(jìn)行排序,冒泡排序和選擇排序在排序過程中交換次數(shù)一樣 D一般情形下,選擇排序比冒泡排序效率更高 6、有如下程序段 : For i=7 to 5 step -1 For j=7 to 9-i step -1 If ajaj-1 then k=aj:aj

7、=aj-1:aj-1=k End if Next j Next i 數(shù)組元素 a1 到 a7 的數(shù)據(jù)依次為3,9,1,5,8,6,2 經(jīng)過該程序段加工后, a1 到 a3 排列為 A1 2 3 B 9 8 6 C 3 9 1 D 8 6 5 7、有如下 VB程序段,已知數(shù)組 a 中有 10 個(gè)元素,儲(chǔ)存的數(shù)據(jù)分別為:56、21、18、64、72、49、3、7、22、 80,就程序運(yùn)行后變量 m的值為1m=0:i=1 Do while i=10 if mai+1 then t=ai:ai=ai+1:ai+1=t Next i print 210、數(shù)組 a(1 to 10 中儲(chǔ)存的數(shù)據(jù)依次分別為:

8、80、7、 56、21、18、64、72、49、38、22,就程序運(yùn)行后變量 m的值為 1 j的值為 2 text1.text中顯示的內(nèi)容為3;m=1 For j=2 to 11 step 1 If am=aj-1 then m=j-1 Next j Text1.text=straj-2 11、假設(shè)有200 個(gè)數(shù)字儲(chǔ)備在數(shù)組中,數(shù)組下標(biāo)從1 開頭,請運(yùn)用冒泡排序及冒泡排序的變式將數(shù)組按要求排列,在橫線上填上正確的代碼;降序(常規(guī)冒泡)升序(常規(guī)冒泡)for i=1 to 199 1 step -1 for a=1 to 199 for j=200 to for b=1 to a step -1

9、 if aj 2 then if sb2 then temp=aj temp=sb aj=aj-1 3 aj-1=temp sb+1=temp end if end if next j next b next i next a 降序(從前往后冒,小的數(shù)往后移)升序(從前往后冒,大的數(shù)往后移)for i=199 to 1 step -1 for x=199 to 1 step -1 for j=1 to i for y=2 to 1if aj 2 then if ay2 then temp=aj ay=ay+ay-1 aj=aj+1 3aj+1=temp ay=ay-ay-1 end if en

10、d if next j next y next i next x 12、在冒泡排序時(shí),當(dāng)某一遍加工過程中沒有數(shù)據(jù)交換,說明數(shù)據(jù)已經(jīng)有序,無需進(jìn)一步加工;為此小明對冒泡排序進(jìn)行了優(yōu)化,編寫了一個(gè) VB程序,功能如下,程序窗體加載即運(yùn)行時(shí),在列表框 List1 中顯示隨機(jī)產(chǎn)生的 n 個(gè)0,100 整數(shù),單擊“ 排序” 的按鈕 Command1,在列表框 List2 中顯示降序排序后的結(jié)果,運(yùn)行的成效圖所示;實(shí)現(xiàn)上述功能的Const n As Integer = 10 Dim a1 To n As Integer Private Sub Form_Load Dim i As Integer Rand

11、omize For i = 1 To n 1 List1.AddItem Strai Next i End Sub VB代碼如下,請?jiān)趧澗€處填空,并改正有錯(cuò)的加框處代碼;Private Sub Command1_Click Dim tmp As Integer, i As Integer, j As Integer, k As Integer For 2 k = 0 For j = n To i + 1 Step -1 If aj aj - 1 Then tmp = aj: aj - 1 = aj: aj = tmp k = k + 1 應(yīng)修改為: End If Next j If Then

12、i = n K0 應(yīng)修改為: Next i For i = 1 To n 3 Next i End Sub 13、n 個(gè)數(shù)據(jù)的冒泡排序需要經(jīng)過n-1 遍加工, 每一遍加工自下而上比較相鄰兩個(gè)數(shù)據(jù),把較小者交換到上面;小劉發(fā)覺:當(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)行成效如以下圖;實(shí)現(xiàn)上述功能的 Dim a1 To 8,n As Integer Private Sub Form_Load VB代碼如下,但加框處代碼有錯(cuò),請改正; n=8, 排序前數(shù)據(jù)儲(chǔ)備在數(shù)組a 中,并 在列表框Listl中顯 示;代碼略End Sub Private Sub Command1_Click Dim flag As Boolean flag值為 True 表示一遍加工中發(fā)生過交換i = 1:flag = True 應(yīng)修改為:Do While i = n Or flag f

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論