二分查找对数据结构有一定的要求,它的前提是数据是有序数列(递增或递减)。
查找过程是:
1.先找到数列的中点,将数据分为大于中点值和小于中点值得2个子数列。
2.对比查找值,缩小查找范围到其中一个子数列。
3.取子数列中点,重复1、2步骤,直到找到目标值。
例子:
有1、2、3、4、5、6、7、8、9这10个数,查找其中的7。
查找过程如下:
由图可看出,找到7二分查找用了3次,而顺序查找需要7次。
如果数列中每个数字查找一次:
顺序查找平均需要(1+2+3+4+5+6+7+8+9) / 9 = 5次;
二分查找平均需要(4+3+2+3+1+4+3+2+3) / 9 = 2.78次;