二分查找只能用于有序表
有序想到二分查找
(一)二分查找的模板一
int binarySearch(int[] nums, int target){
if(nums == null || nums.length == 0)
return -1;
int left = 0, right = nums.length - 1;
while(left <= right){
// Prevent (left + right) overflow
int mid = left + (right - left) / 2;
if(nums[mid] == target){ return mid; }
else if(nums[mid] < target) { left = mid + 1; }
else { right = mid - 1; }
}
// End Condition: left > right
return -1;
}来自力扣专题。注意 中位数 的写法,为了防止整形溢出,left + (right - left)/2
在java的算法内,二分查找的中位数是这样的:(left+right)>>>1

京公网安备 11010502036488号