1、算法說明
1) 選擇法排序
(1) 從n個數(shù)中選出最小數(shù)的下標(biāo),出了循環(huán),將最小數(shù)與第一個數(shù)交換位置;
(2) 除第一個數(shù)外,在剩下的n-1個數(shù)中再按方法(1)選出次小的數(shù),與第二個數(shù)交換位置;
(3) 以此類推,最后構(gòu)成遞增序列。
譬如:
8 6 9 3 2 7
第一輪交換后 2 6 9 3 8 7
第二輪交換后 2 3 9 6 8 7
第三輪交換后 2 3 6 9 8 7
第四輪交換后 2 3 6 7 8 9
第五輪無交換 2 3 6 7 8 9
程序代碼如下:
Private Sub xzPaiXu(a() As Double, sheng As Boolean)
'a為需要排序的數(shù)組,sheng為True則為升序排列,為False,則為降序排列。
Dim i As Integer, j As Integer
Dim temp As Double
Dim m As Integer
For i = LBound(a) To UBound(a) - 1 '進行數(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
Else
If a(j) > a(m) Then m = j
End If
Next j '將最值元素與第i個元素交換
temp = a(i)
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
希望與更多計算機等級考試的網(wǎng)友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |