1. 算法思想:分治,从表中间开始查找目标元素。如果找到一致元素,则查找成功。如果中间元素比目标元素小,则仍用二分查找方法查找表的后半部分(表是递增排列的),反之中间元素比目标元素大,则查找表的前半部分。
2. 前提条件:
1) 查找表必须为有序状态(递增排列或递减排列),本文使用的表中数据是递增的。
2) 查找表为数组形式(内存连续)的数据结构;如果是链表(内存不连续)的数据结构二分查找无法使用,即便采用二分查找的思想也达不到时间复杂度O(logN),因为无法直接定位中间元素(O(1))。
3. 优缺点:
1) 优点是比较次数少,查找速度快,平均性能好;
2) 缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
4. 二分搜索的三种实现:
1) 版本一:查找范围为[lowbound, highbound):左闭右开
int binarysearch(int targetarray[],intlowbou