二分算法

一、思想


 

取某一维度的中间值 分成两半,每次只需要跟其他一半查找或计算

如:对于一个有序的数组 查找某个值 ,那二分可以直接对数组下标进行二分

输入: 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;
}

 

 


posted @ 2020-03-11 21:15  蓝天随笔  阅读(174)  评论(0)    收藏  举报