一个很简单的有关问题,关于二分查找

一个很简单的问题,关于二分查找
C/C++ code


int binsearch(int x, int v[], int n) {
    int low, high, mid;
    low=0;
    high=n-1;
    while(low <= high) {
        mid = (low+high)/2;
        if (x < v[mid])
            high = mid +1;
        else if (x > v[mid])
            low = mid + 1;
        else 
            return mid;
    }
    return -1;
}


如题目,这是在树上看到的一个二分查找(折半查找),请大虾们帮小弟看看,这个查找有问题吗?

------解决方案--------------------
C/C++ code

 if (x < v[mid])
            high = mid - 1;
        else if (x > v[mid])
            low = mid + 1;

------解决方案--------------------
C/C++ code
int binsearch(int x, int v[], int n) {
    int low, high, mid;
    low=0;
    high=n-1;
    while(low <= high) {
        mid = (low+high)/2;
        if (x < v[mid])
            high = mid - 1;   //  这里要用-1
        else if (x > v[mid])
            low = mid + 1;
        else 
            return mid;
    }
    return -1;
}

------解决方案--------------------
C/C++ code
int binary_serch(int *arr, int arr_len, int value)  
{  
    int l = 0;  
    int h = arr_len - 1;  
    int m;  
    while(l <= h) {  
        m = l + ((h-l)>>1);  
        if(value > arr[m]) {  
            l = m + 1;  
        } else if(value < arr[m]) {  
            h = m - 1;  
        } else {  
            return m;  
        }  
    }  
    return -1;  
}

------解决方案--------------------
右移一位,相当于除2
探讨
引用:

C/C++ code
int binary_serch(int *arr, int arr_len, int value)
{
int l = 0;
int h = arr_len - 1;
int m;
while(l <= h) {
m = l + ((h-l)>>1);
if(value > ar……

额..话说,这个是啥啊?我菜鸟刚开始……