




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、VB常用算法-排序1、選擇法排序(1) 利用循環(huán)從n個數(shù)中選出最小數(shù)的下標(biāo),結(jié)束循環(huán)后,將最小數(shù)與第一個數(shù)交換位置;(2) 除第一個數(shù)外,在剩下的n-1個數(shù)中再按方法(1)選出次小的數(shù),與第二個數(shù)交換位置; (3) 以此類推,最后構(gòu)成遞增序列。 譬如: 869327 第一輪交換后269387 第二輪交換后239687 第三輪交換后236987 第四輪交換后236789 第五輪無交換236789 程序代碼如下: Private Sub xzPaiXu(a() As Double, sheng As Boolean) a為需要排序的數(shù)組,sheng為True則為升序排列,為False,則為降序排列
2、。 Dim i As Integer, j As Integer Dim temp As Double Dim m As Integer For i = LBound(a) To UBound(a) - 1 進(jìn)行數(shù)組大小-1輪比較 m = i 在第i輪比較時,假定第 i個元素為最值元素 For j = i + 1 To UBound(a) 在剩下的元素中找出最 值元素的下標(biāo)并記錄在m中 If sheng Then 若為升序,則m記錄最小元素 下標(biāo),否則記錄最大元素下標(biāo) If a(j) a(m) Then m = j End If Next j 將最值元素與第i個元素交換 temp = a(i)
3、 a(i) = a(m) a(m) = temp Next i End Sub 調(diào)用該過程示例: Option Base 1 Private Sub Command1_Click() Dim b(6) As Double b(1) = 8 b(2) = 6 b(3) = 9 b(4) = 3 b(5) = 2 b(6) = 7 Call xzPaiXu(b, True) For i% = 1 To 6 Print b(i) Next End Sub 2、冒泡法排序選擇排序法在每一輪排序時尋找最值元素的下標(biāo),出了內(nèi)循環(huán)(一輪排序結(jié)束時,確定最值下標(biāo)),再交換最小數(shù)的位置;而冒泡法在每一輪排序時將
4、相鄰的數(shù)比較,當(dāng)次序不對時就立即交換位置,出了內(nèi)循環(huán),最值數(shù)已經(jīng)冒出。 譬如: 第一輪比較結(jié)束后,最值冒出869327 8 6 9 3 2 7 8 6 9 2 3 7 8 6 2 9 3 7 8 2 6 9 3 7 2 8 6 9 3 7 . 第二輪次最值冒出 2 3 8 6 9 7 . 第三輪排序后2 3 6 8 7 9 . 第四輪排序后 2 3 6 7 8 9 . 第五輪排序后2 3 6 7 8 9 程序代碼如下: Private Sub mpPaiXu(a() As Double, sheng As Boolean) a為需要排序的數(shù)組,sheng為True則為升序排列,為False,則
5、為降序排列。 Dim i As Integer, j As Integer Dim temp As Double Dim m As Integer For i = LBound(a) To UBound(a) - 1 進(jìn)行n-1輪比較 For j = UBound(a) To i + 1 Step -1 從n到i個元素兩兩進(jìn)行比較 循環(huán)變量j終值為I+1,是因為比較過程中元素下標(biāo)用到j(luò)-1 If sheng Then 若次序不對,馬上進(jìn)行交換 If a(j) a(j - 1) Then temp = a(j) a(j) = a(j - 1) a(j - 1) = temp End If End
6、 If 出了內(nèi)循環(huán),一輪排序結(jié)束 Next j 最值元素冒到最上邊 Next i End Sub 調(diào)用該過程代碼與前面的選擇法排序相同。 3、實戰(zhàn)練習(xí) 1) 完善程序填空(2003秋二(10) 下面是一個采用拉鋸式排序法對數(shù)組元素按升序進(jìn)行排序的程序,所謂“拉鋸式排序法”是前一遍把最小的元素從下到上送到最上的位置,后一遍則是從上到下把最大的元素送到最下的位置。 Option Base 1 Private Sub Command1_Click() Dim a(10) As Integer,i As Integer For i = 1 To 10 a(i) = Int(Rnd * 10)+1 Te
7、xt1 = Text1 & Str(a(i) Next i Call shaker_sort(a) For i = 1 To 10 Text2 = Text2 & Str(a(i) Next i End Sub Private Sub Shaker_sort(k() As Integer) Dim i As Integer, c As Integer, d As Integer Dim t As Integer c = 1 d = ( 1 ) Do For ( 2 ) Step -1 If k(i - 1) k(i) Then t = k(i - 1): k(i - 1) = k(i): k(i) = t End If Next i ( 3 ) For i = c + 1 To d If ( 4 ) Then t = k(i - 1): k
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海洋經(jīng)濟(jì)開發(fā)區(qū)建設(shè)
- 老年大學(xué)護(hù)理課件
- 老年醫(yī)學(xué)護(hù)理課件
- 老年健康課件教學(xué)
- 老年人飲食課件
- 老師的上課課件
- 2025年白茶市場調(diào)查報告
- 廠房租賃及設(shè)備安裝維修一體化服務(wù)合同
- 醫(yī)療機構(gòu)消防設(shè)備安裝與應(yīng)急預(yù)案制定合同
- 餐飲廚師營養(yǎng)與健康指導(dǎo)合同
- 2025上海農(nóng)商銀行校園招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 2025年人教版(2024)初中地理七年級下冊(全冊)知識點復(fù)習(xí)要點歸納
- 弱電工證考試題庫及答案
- 電梯安全風(fēng)險管控清單
- 高支模木模板的選材與加工
- 體育嘉年華活動方案
- 2025年中國寫字樓市場深度分析與投資發(fā)展前景趨勢研究報告
- 羧甲基纖維素鈉降解產(chǎn)物分析-全面剖析
- 2025抗戰(zhàn)勝利80周年現(xiàn)代詩歌朗誦稿(16篇)
- 2025灌南縣國企招聘考試題目及答案
- GB/T 45481-2025硅橡膠混煉膠醫(yī)療導(dǎo)管用
評論
0/150
提交評論