读书人

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

发布时间: 2012-04-20 15:27:03 作者: rapoo

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

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……

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

读书人网 >C语言

热点推荐