一、思想
取某一维度的中间值 分成两半,每次只需要跟其他一半查找或计算
如:对于一个有序的数组 查找某个值 ,那二分可以直接对数组下标进行二分
输入:nums
= [-1,0,3,5,9,12],target
= 9 输出: 4 解释: 9 出现在nums
中并且下标为 4
二、解题模式
常用如下
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; }
原文:https://www.cnblogs.com/yangfei629/p/12465471.html