使用二分法的前提是数组必须为有序数组,且该数组中不存在重复的元素。(若存在重复元素,使用二分法查找返回的元素下标就可能不是唯一的)
解题逻辑:
对于一组升序数组,给出目标值target,在数组中找到目标值对应的下标值。从序列中中间位置开始比较,如果当前位置值array[mid]等于target,则查找成功,下标值为mid;如果当前位置值array[mid]大于target,则在序列的前半段查找;如果array[mid]小于target,则在序列的后半段中查找。以上需要用到循环。
题:在n个有序数组中查找特定数值并输出其下标。
(数组必须为升序)
当array[middle] == target时target下标为middle,查找成功,则不需要进行循环;
当left>right时,说明循环过程中已经找不到存在于数组中的目标值,应跳出循环。
在循环过程中应当理解 array[middle]>target 与 array[middle]<target 的区别,通过比较缩小查找范围。
输出结果