码迷,mamicode.com
首页 > 编程语言 > 详细

二分查找-数组实现(小trick)

时间:2018-12-08 19:15:31      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:相加   binary   查找   方法   color   使用   二分查找   span   ...   

template<typename T>
int binarySearch(T arr[], int n, T target){
    int l = 0, r = n-1;          //在[l...r]范围内寻找target
while(l <= r){              //当 l == r 时 区间有效
int mid = l+(r-l)/2; if(arr[mid] == target) return mid; if(target > arr[mid]) l = mid + 1;          //target在[mid+1, r]中 else                 //target<arr[mid]
r = mid - 1;          //target在[l...mid]中 }

此处的需要注意的点是:

为什么不用 int mid = (l+r)/2

因为mid,l,r 都是整型,所以如果l,r过大,相加后容易整型溢出,所以使用

int mid = l+(r-l)/2

先相减再加的方法。

二分查找-数组实现(小trick)

标签:相加   binary   查找   方法   color   使用   二分查找   span   ...   

原文地址:https://www.cnblogs.com/Bella2017/p/10088639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!