VB对分查找专题Word格式文档下载.doc

上传人:b****1 文档编号:13197275 上传时间:2022-10-08 格式:DOC 页数:4 大小:525.40KB
下载 相关 举报
VB对分查找专题Word格式文档下载.doc_第1页
第1页 / 共4页
VB对分查找专题Word格式文档下载.doc_第2页
第2页 / 共4页
VB对分查找专题Word格式文档下载.doc_第3页
第3页 / 共4页
VB对分查找专题Word格式文档下载.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VB对分查找专题Word格式文档下载.doc

《VB对分查找专题Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《VB对分查找专题Word格式文档下载.doc(4页珍藏版)》请在冰豆网上搜索。

VB对分查找专题Word格式文档下载.doc

Key=val(text1.text)

Fori=1tonstep1

Ifa(i)=keythen

label1.caption=”在数组第”+str(i)+”位置上找到数据”+str(key)

Exitfor’标准代码,退出循环

Endif

Nexti

Ifi=n+1thenlabel1.caption=”没有找到!

”‘所有位置找一遍,没找到;

“i=n+1”可改为“i>

n”

4、顺序查找算法经典程序:

(输入输出视具体情况而定)

Key=val(text1.text):

i=1:

f=false‘boolean类型的变量f记录是否找打

Dowhilei<

=nandf=false‘f=false可以写成notf

f=true

label1.caption=”在数组第”+str(i)+”位置上找到数据”+str(key)

i=i+1

”‘所有位置找一遍,没找到;

n”或“notf”

5、对分查找算法:

又名二分查找,高效,但前提是背查找的数据必须是有序的。

在有序的一组数据中,先将处于中间位置的数据与查找数据比较,若相等则提示成功;

否则根据数组的有序性(升序或降序)判断要查找的数据在前半部分还是后半部分,然后缩小范围按以上方法继续查找,直到找到或找一遍发现数据不存在。

6、关于对分查找需理解:

※到N个数据中用经典对分查找某数,最少查找次数1,最多查找次数int(log2n)+1,平均查找次数为:

※被查找的一组数据必须是有序的,查找过程中注意其升序还是降序。

※查找次数不定,一般用dowhile语句实现循环,请部分同学尝试将语句改为用for语句实现。

7、对分查找经典算法:

(被查找数据以升序为例)

Key=val(text1.text):

i=1:

j=n:

f=false

=jandf=false

m=(i+j)\2‘可改为m=int((i+j)/2),m有非常多的变式,请注意题中书写

Ifa(m)=keythen

f=true:

Elseifkey<

a(m)then‘需要查找的值到前半段找,前半段的尾位置是中值-1

j=m-1

Else‘可改为elseifkey>

a(m)then

i=m+1‘需要查找的值到后半段找,后半段的首位置是中值+1

Endif

Loop‘三个循环变量已经在各自的分支结构中处理

Ifi>

jthenlabel1.caption=”没有找到!

”‘i>

j可改为f=false

巩固练习

1、在数组22、54、7、61、33、9、15中查找数字9,采用从后往前顺序查找,需要查找()

A.2次B.6次C.1次D.7次

2、数组a(1to6)中保存的字符串依次为oil,car,boe,all,web,log,在数组中查找”boy”,执行知识点回顾4中顺序查找经典算法结果是()

A.没有找到B.在数组第1位置上找到数据boy

C.在数组第3位置上找到数据boyD.在数组第6位置上找到数据boy

3、小海同学用VB设计了一个模拟高考查分系统的软件。

主要算法思路是:

考生录入身份证和登陆密码,若身份证号码存在且密码输入正确,就显示高考成绩。

其中,所有同学身份证号码保存在idc(1ton)数组中,数组pas(1ton)和scr(1ton)分别存储对应考生的登入密码和考试成绩——即第i个学生的身份证号为idc(i),相应的登入密码和考试成绩分别为pas(i),scr(i)。

部分代码如下,请改错和填空。

Privatesubcommand1_click()

Dimtasinteger

Dimkey,log,asstring

Key=text1.text

Log=text2.text

t=1:

f=true

Dowhilefandt<

=n-1

Ifthen

Label1.caption=“你的考分是:

”+

f=false

Endif

t=t+1

Loop

iff=thenlabel1.caption=“输入账号密码有误,请确认再输”

4、在数组序号0到序号11中查找某个数,采用经典对分查找法,第一次应查找的数组序号是()A.0B.5C.6D.11

用对分法查找数组A(1to100),如果输入要查找的数不在A这个数组中,则要查找()

A.6次B.7次C.8次D.9次

5、有一个数组,元素为all,car,joe,log,oil,web,若要查找log需要比对次,查找中依次比对的元素顺序是

6、有如下VisualBasic程序段:

Dimiasinteger,jasinteger,masinteger

i=0:

j=8:

k=val(text1.text)

Dowhile(i<

=j)

m=fix((i+j)/2)

Ifk=b(m)then

Exitdo

Else

Ifk<

b(m)thenj=mElsei=m+1

数组元素b(0)到b(8)存储着参加比赛同学的编号,依次为:

“5,8,11,21,32,39,56,65,72”,经过该程序段“加工”查找编号为8号同学的过程中,依次被访问到的编号是()

A.32118B.218C.328D.39218

7、已知一无序数组a(下标1到n),通过引入数组b(下标1到n),使得a(b

(1))≤a(b

(2))≤a(b(3))……≤a(b(n))(示例如图所示),对这些有序数据可进行对分查找。

则第一次查找时,中点位置m与中点值分别是()

A.m的值是int((1+n)/2),中点值是a(m)

B.m的值是Fix((b

(1))+b(n))/2),中点值是a(b(m))

C.m的值是int((b

(1))+b(n))/2),中点值是a(m)

D.m的值是Fix((1+n)/2),中点值是a(b(m))

8、在一次学校的运动会上,高一女子100米决赛的成绩已出,前8名的成绩记录单由于不小心丢掉一张,剩下的7张已按成绩排序,分别是(单位:

秒)14.5,15.1,16.5,16.8,17.1,17.5,17.9。

后来找到了成绩单,请将找到的成绩插入相应位置,是数据序列仍然保持有序,并求出该成绩的名次。

部分代码如下,请将画线处填充完整。

Dima(1to8)assingle‘已将7个成绩按给定顺序存入数组a(1to7)、

Dimxassingle

Dimi,j,m,kasinteger

x=val(text1.text):

j=8

Dowhile

M=(i+j)\2

Iftheni=m+1Else

Fork=i+1to8

’提示:

结束时i的位置即为该成绩名次,将该位置及之后成绩后移一位

Nextk

‘提示:

将查找的成绩保存至空出的位置中

’输出部分的代码省略

Endsub

9、编写VB程序,实现如下功能:

在文本框Text1中输入一个整数,单击“查找删除”按钮Command1,采用对分查找法在数组A(从小到大排列,并显示在标签Label1中)中查找该数。

若找到,则从数组A中删除该数(该数后面的数组元素都前移一位),并在标签Label2中显示删除后的结果(运行效果如图所示);

否则,在标签Label2中显示“该数没有找到”。

实现上述功能的VB代码如下,改正下划线处的错误并填空。

DimA(1To10)AsInteger’用于保存10个按从小到大顺序排列的整数

’Form_Load事件过程产生10个整数,按升序保存在数组A中,并在标签Label1中显示

PrivateSubForm_Load()

’代码略

EndSub

PrivateSubCommand1_Click()

DimIAsInteger

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1