二分查找 - vb.net
Module Module1
Sub Main()
Dim array(999) As Integer
Dim searchValue As Integer
Dim valueIndex As Integer
Dim rnd As New Random()
For i As Integer = 0 To UBound(array)
If (i = 0) Then
array(i) = rnd.Next(10)
Else
array(i) = rnd.Next(array(i - 1), array(i - 1) + 10)
End If
Console.WriteLine("array(" & i & ")=" & array(i))
Next i
Console.WriteLine(vbCrLf & "请输入一个1~100之间的整数:")
searchValue = Console.ReadLine()
valueIndex = Find(array, searchValue)
If (valueIndex <> -1) Then
Console.WriteLine("查找成功!元素位于索引(" & valueIndex & ")处")
Else
Console.WriteLine("查找失败!")
End If
Console.ReadKey()
End Sub
Function Find(ByVal array() As Integer, ByVal searchValue As Integer) As Integer
Dim result As Boolean
Dim valueIndex As Integer
Dim startIndex, endIndex As Integer
startIndex = 0
endIndex = UBound(array)
result = BinarySearch(array, searchValue, startIndex, endIndex, valueIndex)
Return IIf(result, valueIndex, -1)
End Function
Function BinarySearch(ByVal array() As Integer, ByVal searchValue As Integer, ByRef startIndex As Integer, ByRef endIndex As Integer, ByRef valueIndex As Integer) As Boolean
If (array Is Nothing Or array.Length = 0) Then
Return False
End If
Dim midIndex As Integer
midIndex = Math.Ceiling((startIndex + endIndex) / 2)
If (array(midIndex) = searchValue) Then
valueIndex = midIndex
Return True
End If
If (array(midIndex) < searchValue) Then
startIndex = midIndex + 1
endIndex = endIndex
Else
startIndex = startIndex
endIndex = midIndex - 1
End If
Return BinarySearch(array, searchValue, startIndex, endIndex, valueIndex)
End Function
End Module
二分查找 - vb.net的更多相关文章
- jvascript 顺序查找和二分查找法
第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...
- Java实现的二分查找算法
二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点 ...
- 从一个NOI题目再学习二分查找。
二分法的基本思路是对一个有序序列(递增递减都可以)查找时,测试一个中间下标处的值,若值比期待值小,则在更大的一侧进行查找(反之亦然),查找时再次二分.这比顺序访问要少很多访问量,效率很高. 设:low ...
- java实现二分查找
/** * 二分查找 * @param a * @param n * @param value * @return * @date 2016-10-8 * @author shaobn */ publ ...
- 最新IP地址数据库 二分逼近&二分查找 高效解析800万大数据之区域分布
最新IP地址数据库 来自 qqzeng.com 利用二分逼近法(bisection method) ,每秒300多万, 比较高效! 原来的顺序查找算法 效率比较低 readonly string i ...
- c#-二分查找-算法
折半搜索,也称二分查找算法.二分搜索,是一种在有序数组中查找某一特定元素的搜索算法. A 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束: B 如果某一特定元素大于或者小 ...
- 【Python】二分查找算法
二分查找:在一段数字内,找到中间值,判断要找的值和中间值大小的比较.如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找.如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找.直到找到我们 ...
- PHP实现文本快速查找 - 二分查找
PHP实现文本快速查找 - 二分查找法 起因 先说说事情的起因,最近在分析数据时经常遇到一种场景,代码需要频繁的读某一张数据库的表,比如根据地区ID获取地区名称.根据网站分类ID获取分类名称.根据关键 ...
- java二分查找举例讨论
最近做笔试题有这么一个关于二分查找的例子. 给一个有序数组,和一个查找目标,用二分查找找出目标所在index,如果不存在,则返回-1-(其应该出现的位置),比如在0,6,9,15,18中找15,返回3 ...
随机推荐
- FIR数字滤波器的设计要点
源:http://blog.sina.com.cn/s/blog_493520900101gt0a.html FIR数字滤波器的设计要点
- ural1090 In the Army Now
In the Army Now Time limit: 1.0 secondMemory limit: 64 MB The sergeant ordered that all the recruits ...
- cinder /etc/lvm/lvm.conf 注意点
在cinder节点,cinder-volume使用的磁盘(/dev/sdb),需要在/etc/lvm/lvm.conf中配置: devices {...filter = [ "a/sdb/& ...
- [iOS]C语言技术视频-05-程序循环结构(do{}while();)
下载地址: 链接: http://pan.baidu.com/s/1c02ke3m 密码: x97w
- 用eclipse还是myeclipse好
工欲善其事,必先利其器.工具,只是一个达成目的的手段,如果你的目的是更关心业务逻辑和开发效率,使用myeclipse.如果你的目的是对eclipse的插件的安装,使用更加了解,业余可以研究一下ecli ...
- andorid之摄像头驱动流程--MTK平台
原文地址:andorid之摄像头驱动流程--MTK平台 作者:守候心田 camera成像原理: 景物通过镜头生产光学图像投射到sensor表面上,然后转为模拟电信号,经过数模变成数字图像信号,在经过D ...
- mysql管理----状态参数释义
下面是数据库MySQL优化的一些步骤 一.通过show status和应用特点了解各种SQL的执行频率 通过SHOW STATUS可以提供服务器状态信息,也可以使用mysqladmin extende ...
- 使用for循环输出杨辉三角-还是不懂得需要复习
package com.chongrui.test; /* *使用for循环输出杨辉三角杨辉三角形由数字排列,可以把它看作一个数字表,其基本特征是两侧的数值均为1,其他位置的数值是其正上方的数值与左上 ...
- iOS开发——发短信,邮件
在IOS开发中,有时候我们会需要用到邮件发送的功能.比如,接收用户反馈和程序崩溃通知等等,这个功能是很常用的.在苹果系统中,如果彼此的手机都是iOS设备,并且开通了iMessage功能,那么彼此之间的 ...
- javascript 闭包理解
摘自:http://www.cnblogs.com/jkswjw/p/3180384.html javascript 闭包基础分享 闭包向来给包括JavaScript程序员在内的程序员以神秘,高深的感 ...