這是今天上課所做的程式
"二元搜尋法"


Option Base 1 '陣列註標起始值預設為1

Private Sub Form_Activate()
Dim A(6) As Integer
Dim i As Integer
Dim j As Integer
Dim L%, R%, M% 'L、R分別代表第一個及最後一個資料的位置 , M代表中間資料的位置
Dim Target As Integer 'Target代表要搜尋的資料
Dim Result As String 'Result代表搜尋的結果
A(1) = 48: A(2) = 2: A(3) = 63: A(4) = 27: A(5) = 94: A(6) = 52
Print
Print " 原始資料列:"; A(1); A(2); A(3); A(4); A(5); A(6)
For i = 1 To (6 - 1) '外迴圈排序循環5次
For j = 1 To (6 - i) '內迴圈依排序循環次數增加,比對次數遞減
If A(j) > A(j + 1) Then '判斷大小位置須交換否?
Temp = A(j) '先將A(j)之資料暫存在Temp中
A(j) = A(j + 1) '將A(j+1)之資料存入A(j)中
A(j + 1) = Temp '將Temp之資料存入A(j+1)中,
End If
Next j
Next i
Print
Print " 排序後資料列: ";
For i = 1 To 6
Print A(i);
Next i
Target = 63
L = 1: R = 6: Result = "找不到"
While L <= R And Result = "找不到"
M = (L + R) \ 2 '計算中間資料所在的位置
If A(M) = Target Then
Result = "找到目標資料"
Else
If A(M) > Target Then
R = M - 1
Else
L = M + 1
End If
End If
Wend
MsgBox Result & Target '顯示搜尋的資料與找尋的結果
End Sub

流程圖↓


程式介面↓


程式結果↓


arrow
arrow
    全站熱搜

    nini791213 發表在 痞客邦 留言(0) 人氣()