2022-06-07 3-1 二分查找
力扣题目:Link
二分法前提条件:
- 有序——符合二分法的逻辑
- 去重——防止返回的
index不唯一
二分法两种写法的关键:
两种写法的不同点在于
target在闭区间还是左闭右开。
while(left < right)在[left, right]区间内是否有效;nums[middle] > right时,实际比较的是nums[middle]还是nums[middle-1]。
二分法Pseudocode:
BINARY-SEARCH (array arr, int index)
left = 0;
right = arr.size();
while (left < right) {
int middle = left + ((right - left) / 2);
if (arr[middle] > target) {
right = middle;
} else if (arrr[middle] < target) {
left = middle;
} else {
return middle;
}
}
return -1;