折半查找(又名二分查找)
算法思路:
注意: (当前查找序列必须满足有序序列)
只能确定一个是否存在的值,如过有多个查找值,只会返回其中的一个.
代码实现
int binary_search(int *arr, int x, int n){
int low = 0; high = n -1;//数组长度为n,最后一个元素下标为n-1.
while (low <= high) {
int mid = (low + high)>>1;//位运算等价于 (low +high)/2;
if (arr[mid] == x) return mid;
if (arr[mid] > x) high = mid - 1;
if (arr[mid] < x) low = mid + 1;
}
return -1;
}
递归版本二分
int binary_search(int *arr, int head, int tail, int value ){
if (head > tail) return -1;
int mid = (head + tail

这篇博客介绍了如何利用二分查找算法实现开平方根函数。首先,讲解了二分查找的基本思想和递归版本的实现。接着,讨论了在寻找平方根过程中遇到的问题,即对于0到1区间内的数,常规二分查找无法找到结果。最后,提出了针对这个问题的改进方案,通过调整查找区间来优化算法。


最低0.47元/天 解锁文章
731





