二分法易踩坑 之 如何取中间值

肝LeetCode的时候没少用到二分法,但是每一次涉及怎么取中间值的时候,总是容易忽略,以至于踩来很多次同一个坑。

二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。

二分法查找的思路如下:

  • 首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。
  • 如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤上一步的操作。

说到中间的元素,那很简单嘛,在二分查找中,选取 mid 的方法一般为 mid = (right + left) / 2

let mid = (right + left) / 2;

然而,如果 leftright 都很大,有的编程语言会有整数溢出的情况(例如 C++,Java),那么可以用 mid = left + (right - left) / 2 代替前者。

let mid = left + (right - left) / 2

对于js er,防止溢出食用以下代码最佳

let mid = left + parseInt((right-left)/2);

你可能感兴趣的:(二分法易踩坑 之 如何取中间值)