二分查找
二分查找作为一种效率较高的搜索算法,应用也很频繁。最近学二分查找,在网上看了各种版本的模板,发现都是对边界值的一些细微的区别。看了几个才发现自己一个个去理解太蠢了,反正实现一样的功能,找个自己容易理解的模板背下来就行了。
这里写个自己相对容易理解的就当是给自己记录一下了。。。
int BinarySearch(int a[], int x, int left, int right)
{
while (left <= right)
{
int mid = left + ((right -left) >> 1); //mid = (left + right) /2;
if( a[mid] == x )
return mid;
else if( a[mid] > x)
right = mid -1;
else //a[mid] < x
left = mid +1;
}
return -1;
}
递归也能写,似乎递归初学者看起来更好理解。不过我个人还是比较喜欢这种,emm就这样吧…又是摸鱼的一天