如何实现数组的二分查找

Posted 一起学VB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现数组的二分查找相关的知识,希望对你有一定的参考价值。

二分查找是一种极其高效、简练的查找算法,它不仅简单,易用,而且还非常的高效。相对于顺序查找,二分查找在效率是呈现指数性提升,数据量越大,越能体现出二分查找法的优势。


二分查找的查找过程是:先确定待查找元素所在线性表的范围,然后逐步缩小范围直到找到(或找不到)该元素为止。


二分查找算法要求数据必须是有顺序的排序,即要么是升序排列,要么是降序排列。因此,在使用二分查找法前,需要将数组处理为有序数组。


案例说明



本案例演示了如何利用二分查找算法在一个有序数组中查找指定内容。




关键技术


利用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中具有非常非常重要的作用,对于处理数据具有绝对的优势,因此掌握数组的基本操作,尤其是增加、删除和插入以及查询都是相当重要的。小伙伴们一定要勤加练习哦。


友情提示:



以上是关于如何实现数组的二分查找的主要内容,如果未能解决你的问题,请参考以下文章

php如何实现统计一个数字在排序数组中出现的次数(代码)

二分查找的代码实现

二分法查找

二分查找算法讲解及其C++代码实现

二分查找最优实现

Java 给定一个有序整型数组, 实现二分查找