教学材料《VB导论》_6.3.pptVIP

  • 0
  • 0
  • 约1.42万字
  • 约 61页
  • 2026-01-22 发布于广东
  • 举报

顺序查找的算法表示(x为待查找的数,search为数组名):Fori=1to ifsearch(i)=xthenexitfornexti‘退出的两种情况Ifthen print”找到了X“else print”没找到X“endif Ubound(search)i=ubound(search)例6-7代码解析OptionExplicitOptionBase1DimsearchAsVariantPrivateSubCommand1_Click()Dimi%,elementAsVariantsearch=Array(34,12,56,81,74,59,83,91,26,57)ForEachelementInsearchText1=Text1Str(element)NextelementEndSub定义模块级变体变量使用array给变体变量赋值,把它创建成一维数组使用for–each-next语句在文本框中输出数组元素.PrivateSubCommand2_Click()DimiAsInteger,findAsIntegerText2=find=InputBox(输入要查找的数)Fori=1ToUBound(search)Ifsearch(i)=findThenExitForNextiIfi=UBound(search)ThenText2=要查找的数Str(search(i))是search(Str(i))ElseText2=在数列中没有找到Str(i)EndIfEndSub在数组中逐个查找,如果找到结束循环思考:123456……1000250在第几个?1001在第几个?顺序查找的方法虽然简单,当数组很大时,这种查找方法效率较低。用顺序查找的方法找2、二分(折半)查找leftrightmid折半查找法是对有序数列进行查找的一种高效查找办法。其基本思想是逐步缩小查找范围。因为是有序数列,所以采取半分作为分割范围可使比较次数最少。设left代表查找区间的左端位置,初值为1;right代表查找区间的右端位置,初值为数组的上界;mid代表查找区间的中部位置,Mid=(left+right)/2。要查找的数存放在变量find中。1、计算出中间元素的位置mid,判断要查找的数find与S(Mid)是否相等。若相等,则要查找的数已经找到,位置就是Mid,否则进行下面的判断。2、如果find小于S(Mid),因为是有序数列,则X必定落在left和Mid的范围之内,下一步查找只需在此范围之内进行即可。即left位置不动right变为Mid-1。重复1即可。3、如果X大于S(Mid),则X必定落在Mid+1和right之间,下一步查找范围应该是left=Mid+1和right,设定完left后即可转到1继续判断。leftrightrightleft二分法的算法如下:注意:在此循环过程中,left,right,mid都是表示位置的整数,如果循环到leftright,则表明此数列中没有要找的数,应该退出循环。比如:在数组S:2810121880中找100第1次查找:Left=1,right=6,mid=4因为100s(4),所以将left修改为mid+1=5,开始第2次查找。第2次查找:Left=5,right=6,mid=6因为100s(6),所以将left修改为mid+1=7,此时leftright了,表示查找结束,没有找到。flg=False left= right=DoWhile mid=(left+right)/2 IfX=S(mid)Then flag=True exitdo ElseIfXS(mid)Then Else EndIfLoop 二分查找的算法表示:1ubound(

文档评论(0)

1亿VIP精品文档

相关文档