二分查找

二分查找

例题.在有序表{7,14,18,21,23,29,31,35,38}中查找18.

【解析】

对于折半查找有序表里面其中的一个元素的话我们需要注意以下几点

>首先我们需要将表中的元素从小到大排序,由于题目中已经说了是有序表所以我们不需要将这些元素排序(切记这一步很重要)

>由于是折半查找顾名思义也就是将表中的元素拆分成一半缩小范围来查找,所以我们需要引入2个变量low和high以及mid,其中low标志每一次折半首元素,high标志位每一次折半的尾元素,mid表示为中间元素。

弄清楚了上面的2个概念的话接下来我们需要画图来演示怎么查找

【先将元素存入顺序表中】

 

 

【第一次比较】

 

 

从题目中可以看出第一次查找mid=(9+!)/2=5,其值为23,因为23>18此时我们需要将high移到mid的左侧此时high=4

【第二次比较】

 

 

第二次查找的时候mid=(4+1)/2=2此时其值为14,由于14<18,所以需要将low移到mid的右边此时low=3

【第三次比较】

 

 

第三次查找mid=(3+4)/2=3,此时其值为18,由于18=【18】,也就是我们需要查找的,故查找结束。

 

【注意】

在这里我需要补充下,首先是我们求mid,这里mid=(low+high)/2,这里的结果是取整

其次就是我们算出mid之后mid对应的值,如果mid对应的值大于我们需要查找的值,那么high将右移到mid的左边

如果mid对应的值小于我们需要查找的值,那么low将移到mid的右边

posted @ 2021-08-23 15:10  碧水斜茶  阅读(45)  评论(0编辑  收藏  举报