首页 > 编程语言 > 详细

二分算法

时间:2020-03-11 22:24:46      阅读:78      评论:0      收藏:0      [点我收藏+]

一、思想


 

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!