导航:首页 > 源码编译 > vb对分查找算法

vb对分查找算法

发布时间:2023-01-10 05:12:15

Ⅰ VB对分查找

对分查找,过程如下:
一,首先初始化,确定查找范围:1 -- 5
设查找的范围起始下标为S,终止下标为E,则:S = 1,E = 5。
二,重复以下循环,两个步骤
1,求中点数组下标:M = Int((S + E)/2)
2,判断中点元素与要找的数是否相等:d[M] = Key? (这里假设数组为D,要找的数为Key)
若d[M] = Key 则找到了;
否则就没找到;需要根据判断 d[M]<Key?若是,即要找的数比现在的中点大,那么可以舍弃中点以前(包括中点)的所有元素,因为数组是升序排列的,(可以想想,如果数组降序排列就需要舍弃中点以后的元素了)。(也可以想想,用d[M]>Key?作为条件判断)。
这里d[M]<Key?若是,舍弃中点以前(包括中点)的所有元素,即:S = M + 1 ,E = E;
否若,舍弃中点以后(包括中点)的所有元素,即:S = S ,E = M - 1;
3,判断若 S > E (起始下标超过终止下标了),结论Key是找不到了;
否则,继续执行1,进行下一次查找。

现在看你的问题:
要找10,第1次中点是3,即:10>d[3],从而得到第2次的查找范围为,4-5
第2次中点是4,即:10=d[4],从而得到第2次就找到的结论

Ⅱ VB 对分法是怎样的

对分查找又称为折半查找、二分查找。的算法:将给定值与有序顺序表(即已经按关键字的大小排好序的数据序列)的中间位置元素的关键字比较,相等则查找成功,不等则根据比较结果在表的前半部分或后半部分按相同方法继续查找,直到查找成功或确定查找失败。
对分查找的优点:查找效率高(最大比较次数=log2 N);缺点:只能用于有序顺序表。
VB实现:设:①有已经由小到大排好序的含N个数据的数据序列 D(1),D(2)……D(N),现在要确定数据 DF 是否包含在序列中及其位置(如果包含的话);②X为当前查找区域的首数据位置,Y为当前查找区域的尾数据位置,K为当前查找区域的中间数据位置(当前查找区域的折半位置),J为DX在序列中的位置(0表示不在序列中)
J = 0: X = 1: Y = N
Do While X <= Y: K = (X + Y) / 2
If DF = D(K) Then J = K: Exit Do Else If DF > D(K) Then X = K + 1 Else Y = K - 1
Loop

Ⅲ 电脑VB程序

'建立一个命令按钮Command1,两个文本框,第二个要大一些,
'将Text2.MultiLine属性设为True
'绘制完成后双击窗体,将代码全部删除,将本段代码复制进去

'运行
'在第一个框里输入数据个数,单击按钮
Dim t() As Long

Private Sub Command1_Click()
ReDim t(Text1.Text)
Dim i As Integer, j As Integer
If Text1.Text <= 1 Then Exit Sub
For i = 1 To Text1.Text
t(i) = InputBox("数据" & CStr(i) & ":")
Next i
For i = 1 To Text1.Text - 1
For j = 1 To Text1.Text - i
If t(j) > t(j + 1) Then Swap t(j), t(j + 1)
Next j
Next i
Text2.Text = ""
For i = 1 To Text1.Text
Text2.Text = Text2.Text & CStr(t(i)) & vbCrLf
Next i
End Sub

Sub Swap(a, b)
Dim c As Long
c = a
a = b
b = c
End Sub

Ⅳ VB对分查找算法如果是偶数该从哪个开始找

以10个数为例,应该从第5位开始查找。fix((1+10)/2),(开始下标+结束下标)除2再用fix函数截掉小数部分

Ⅳ vb二分查找编程查找1到100之间的一个数。代码 求大神帮帮忙

Public Function Search(ByRef Str() As String, ByVal sKey As String) As Long
Dim X As Long, Y As Long, S As Long
Y = UBound(Str)
While (X <= Y)
S = (X + Y) / 2
If Str(S) = sKey Then
Search = S
Exit Function
Else
If Str(S) > sKey Then Y = S - 1 Else X = S + 1
End If
Wend
Search = -1
End Function
Private Sub Command1_Click()
Dim A(10) As String, S As Long
A(0) = 21
A(1) = 22
A(2) = 23
A(3) = 24
A(4) = 25
A(5) = 26
A(6) = 27
A(7) = 28
A(8) = 29
A(9) = 30
A(10) = 31
S = Search(A, 30) '在上列内容中查找"30”
If S<0 Then Me.Caption = "查找失败" Else Me.Caption = A(S) & " in " & S
End Sub
======================================================================
'二分法查找算法 这个是简易用法
Private Sub Command1_Click()
Dim X As Long, Y As Long, S As Long
Dim D(10), T
Cls
For I = 1 To 10
D(I) = InputBox("Num:" & I)
Print D(I)
Next
Y = UBound(D)
T = InputBox("Key:") '在上列内容中查找什么
While (X <= Y)
S = (X + Y) / 2
If D(S) = T Then
Search = S
Me.Caption = D(S) & " in " & S
Exit Sub
Else
If D(S) > T Then Y = S - 1 Else X = S + 1
End If
Wend
Me.Caption = T & " 查找失败"
End Sub

Ⅵ VB查找怎么做啊

实现查找功能的关键在于使用InStr函数,这个函数可以找到指定的字符串在另一字符串中最先出现的位置。我们先来看一看使用这个函数的语法:

InStr([start, ]string1, string2[, compare])

这个函数需要的的参数是起始位置、主体字符串、要查找的字符串;Compare是

VB中如何实现文本查找功能

实现查找功能的关键在于使用InStr函数,这个函数可以找到指定的字符串在另一字符串中最先出现的位置。我们先来看一看使用这个函数的语法:

InStr([start, ]string1, string2[, compare])

这个函数需要的的参数是起始位置、主体字符串、要查找的字符串;Compare是可选参数。指定字符串比较。此compare参数是可以省略的,也可以是 0, 1或 2。指定0(缺省)做二进制比较。指定1做不区分大小写的文本比较。例如我们要查找在字符串“abcdefg”中是否存在“cd”并返回其位置,则使用下面的语句就可以实现:

pos=InStr(1,"abcdefg","cd")

则pos会返回3表示查找到并且位置为第三个字符开始。这就是“查找”的实现,而“查找下一个”功能的实现就是把当前位置作为起始位置继续查找。

下面举例说明:

放置一个文本框TEXT1供用户输入文本或调入文本文件,用来做在其中查找文本的验证,放置另一个文本框TEXT2供用户输入要查找的字符串,放置两个命令按钮,Command1、Command2,其标题分别为“查找”、“查找下一个”。

在窗体的总体声明部分写如下代码 :

Option Explicit ’定义目标位置变量
Private TargetPosition As Integer

’编写一个查找函数
Private Sub FindText(ByVal start_at As Integer)
Dim pos As Integer
Dim target As String
’获取用户输入的要查找的字符串
target = text2.Text
pos = InStr(start_at, text1.Text, target)
If pos > 0 Then
’找到了匹配字符串
TargetPosition = pos
text1.SelStart = TargetPosition - 1
’选中找到的字符串
text1.SelLength = Len(target)
text1.SetFocus
Else ’没有找到匹配的字符串
MsgBox "没找到!"
text1.SetFocus
End If
End Sub

’双击“查找”命令按钮:
Private Sub command1_Click() ’从第一个字符处开始查找
FindText 1
End Sub

’双击“查找下一个”按钮:
Private Sub command2_Click() ’从当前位置继续查找
FindText TargetPosition + 1
End Sub

运行程序,在文本框1中输入一些字符串,在文本框2中输入要查找的字符串,单击 “查找”按钮和“查找下一个”按钮进行验证。

Ⅶ 将流程图转化为VB代码

i=1
j=n
flag="N"
do while i<=j and flag="N"
m=(i+j)/2
if d(m)=key then flag="Y" else if d(m)<key then i=m+1 else j=m-1
loop
msgbox iif(flag="Y",m,0)

Ⅷ VB 二分查找代码,求解

Private Sub Command1_Click()
Dim I, J, D(10), Key
For I = 1 To 10
D(I) = InputBox("Num:" & I)
Print D(I)
Next
Key = InputBox("Key:")
For I = 1 To 10
If Val(D(I)) = Val(Key) Then
Print I
Exit For
End If
Next
End Sub

Ⅸ 随机产生50个从小到大的数据(范围要求大于等于30且小于等于200),用对分法查找指定数值。

关键算法是通过随机数生成指定范围的数。
我们知道,vb内置的随机数取值范围是[0,1), 170*Rnd+30就可以表达大于等于30且小于等于200的数了,如果是整数,就是 int(170*Rnd)+30

所以随机产生50个从小到大的数据(范围要求大于等于30且小于等于200)代码为:

Dim a(1 To 50) As Integer
Dim i As Integer
Randomize
For i = 1 To 50
a(i) = Int(Rnd * 170) + 30
Next i

对分法查找指定数值是什么意思?

Ⅹ vb二分查找编程,随机生成1到100的一个数,并查找该数

1,产生随机数,保存到指定的数组。2,输入一个数,采用对分查找的方法,在上面的数组里找寻。

阅读全文

与vb对分查找算法相关的资料

热点内容
phpsae源码 浏览:853
为什么安卓手机一直要权限 浏览:227
汇编程序的伪指令 浏览:803
苹果7怎么更新app 浏览:318
c语言常用算法pdf 浏览:960
编程如何让画面动起来 浏览:865
大龄女程序员未来发展 浏览:976
数学书籍pdf 浏览:506
加密门禁卡写入成功无法开门 浏览:464
齿轮传动pdf 浏览:52
alpinelinux 浏览:150
手机端app的扫码功能在哪里 浏览:227
少儿编程中小班英语教案 浏览:452
锁屏密码加密手机怎么解除 浏览:205
linuxlostfound 浏览:135
征途服务器ip地址 浏览:330
git提交代码命令行 浏览:165
什么叫浏览器服务器结构 浏览:157
于谦聊天哪个app 浏览:449
小鹏汽车nlp算法工程师薪资 浏览:881