二分查找-数组实现(小trick)
Posted bella2017
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找-数组实现(小trick)相关的知识,希望对你有一定的参考价值。
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)的主要内容,如果未能解决你的问题,请参考以下文章