二分查找是一種極其高效、簡練的查找算法,它不僅簡單,易用,而且還非常的高效。相對于順序查找,二分查找在效率是呈現指數性提升,數據量越大,越能體現出二分查找法的優勢。
二分查找的查找過程是:先確定待查找元素所在線性表的范圍,然后逐步縮小范圍直到找到(或找不到)該元素為止。
二分查找算法要求數據必須是有順序的排序,即要么是升序排列,要么是降序排列。因此,在使用二分查找法前,需要將數組處理為有序數組。
案例說明
本案例演示了如何利用二分查找算法在一個有序數組中查找指定內容。關鍵技術
利用do循環結構語法,每次循環時查找一個中間值,并判斷是否是要找的內容,如果是則結束循環,否則修改中間值,繼續查找,直到找到指定內容,或者查詢完畢。
設計過程
步驟一
按照下圖完成程序界面的搭建。
步驟二
首先,需要在代碼區頂部聲明一個全局數組arr(1000)
Option ExplicitDim arr(1000) As Long
步驟三
然后,編寫窗體加載的代碼,在這里我們為arr數組賦予一個初始的內容。
Private Sub Form_Load() Dim i As Long '給數組分配內容 For i = 1 To 1000 arr(i) = i * 2 Next iEnd?Sub
步驟四
接著,我們編寫查詢按鈕的代碼。
Private Sub Command1_Click() Dim low%, hight%, mid%????Dim?flag?As?Boolean??'是否查詢到內容的標記????'給下標、上標和中間值初始值 low = 1 hight = 1000 mid = (low + hight) / 2 flag = False????'開始查找 Do While (flag = False And hight >= low) If arr(mid) = Text1 Then MsgBox "找到該數,下標為:" & mid flag = True Exit Do ElseIf arr(mid) > Val(Text1) Then hight = mid - 1 Else low = mid + 1 End If mid = (low + hight) / 2 DoEvents Loop If flag = False Then MsgBox "未查詢到該數"End Sub
步驟五
最后,我么來進行測試。運行程序,輸入一個要查找的數值,然后點擊查詢按鈕。
總結
數組在VB中具有非常非常重要的作用,對于處理數據具有絕對的優勢,因此掌握數組的基本操作,尤其是增加、刪除和插入以及查詢都是相當重要的。小伙伴們一定要勤加練習哦。
友情提示:
添加QQ群 一起學VB 1138946358 可第一時間獲取本案例源代碼~~