一、使用前提
数据已经按照升序排列!
二、基本原理
将要查找的元素(key)与数组的中间元素比较
- 如果key小于中间元素,只需要在数组的前一半元素中继续查找
- 如果key和中间元素相等,匹配成功,查找结束
- 如果key大于中间元素,只需要在数组的后一半元素中继续查找key
三、实践(low+high)/2
low:最小值
mid:中位数
high:最大值
数据如下图所示:
查找的元素:key = 5;
key=5 与中位数 数组下标为[6]的元素比较,5<35,接下来在数组的前一半元素中继续查找,high的下标为上次mid的前一位,mid值为数组下标[2],如下图所示:
key=5 与中位数 数组下标为[2]的元素比较,5<8,high的下标为上次mid的前一位,mid值为数组下标[0],如下图所示:
key=5 与中位数 数组下标为[0]的元素比较,5>2,low后移一位,low、mid、high都指向下标[1]
找到要查找的数据。