数据结构怎样折半查找?

数据结构怎样折半查找?

举个例子说明吧,在下面一堆数中找数字2

编写代码是先定义3个int类型的变量m,f,l,

初始时,将f==1的地址,l==7的地址,m=(f+l)/2

先遍历m处的数据,它大于2,说明2在它的左边,这个时候将l的值改一下,改成l=m-1(为什么呢?因为你把l改成m-1,那么下一次遍历就在1到4之间查找了。

l=m-1,f=1不变,m等于此时的l加f的和除以2,即m=(f+l)/2,那么m就指向(1+4)/2=2.5的位置,但是m是int类型,在c中2.5取整后为2,所以m=2,m指向数组第二个位置,这个位置的数据就是2,查找成功!

初始时:

f=First m=middle l=last

↓ ↓ ↓

1 2 3 4 5 6 7

第二次遍历:

f m l

↓ ↓ ↓

1 2 3 4 5 6 7

精选文章

相关文章

粤ICP备17098710号 微点阅读