VB编程:对数组进行二分查找-29
原创
©著作权归作者所有:来自51CTO博客作者彭世瑜的原创作品,请联系作者获取转载授权,否则将追究法律责任
运行效果
程序代码
Option Explicit
Dim myarray(100) As Integer '定义数组,下标0-100,数组元素为101个
Private Sub Command1_Click()
Dim low, high, mid, n As Integer
Dim found As Boolean
low = 0
n = 0
high = UBound(myarray)
found = False
mid = CInt((high + low) / 2) '转换为整型,小数部分四舍五入,避免下标出现小数
Do While Not found And (high >= low)
n = n + 1
If CInt(Text1.Text) = myarray(mid) Then ''查找值和当前中间值比较,相等输出
found = True
Label1.Caption = "查询次数:" & n & vbCrLf & _
"查询数值:" & myarray(mid) & vbCrLf & _
"数组下标:" & mid
Exit Do
ElseIf CInt(Text1.Text) < myarray(mid) Then '查找值和当前中间值比较,小了
high = mid - 1
Else '查找值和当前中间值比较,大了
low = mid + 1
End If
mid = CInt((high + low) / 2)
Loop
End Sub
Private Sub Form_load()
Dim i As Integer
For i = 0 To UBound(myarray) '给数组赋值
myarray(i) = i
Print myarray(i)
Next i
End Sub
学习心得
1、二分法查找的思想就是:先取中间值作比较,看大了还是小了,大了就往下取数,小了就往上取数。这样逐步缩小查找范围,就不用每个数都去做比较。适用于有序数组,确实能提高计算效率,是一个很不错的思维方式。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【二分查找】旋转数组的二分
用mid将整个区间分为[l, mid]和[mid+1, r],当nums[mid] >= nums[l]时,则[l, mid]有
算法 数据结构 leetcode 数组 二分法查找 -
编程之美:二分查找
前三个问题不讲,已经解决过了 可以
#include javascript ios -
[二分查找] 二:二分查找的经典例题
1.何时应该会使用二分查找当题目中出现有序数组时当时间复杂度要求为log(n)时搜索范围可以一次缩小一半时2. 经典例题1给定一个排序数组和一个目标值
算法 leetcode 数据结构 二分查找 数组 -
javascript 二分查找 二分查找法 java
java 二分法查找
java 排序 算法 二分查找 有序表 -
mysqlsever安装教程2012
注册了oracle的登录名密码:dsideal******** 后面的*号是王卓常用的密码,但是是大写的,因为ORACLE的密码机制要求严格。WINDOWS版下载地址:LINUX下载地址:源码安装选择“Source Code”下拉菜单,在出来的列表里选最后一个“Generic Linux (Architecture Independent),Compressed TAR Archive
mysqlsever安装教程2012 mysql 5.6.11安装图解 服务器 Server Machine -
mysql datetime怎么查询快
求出一周数据排行榜 select *from DOWNLOADRECORDS where DOWNLOADRECORDS_TIME>DATE_SUB(now(),INTERVAL 7 DAY);求出24小时内数据排行榜 select *from DOWNLOADRECORDS where DOWNLOADRECORDS_TIME>DATE
mysql datetime怎么查询快 mql一周数据 mql一天数据 mql一月数据 分时间段查询