首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-20 
一个很简单的问题,关于二分查找C/C++ codeint binsearch(int x, int v[], int n) {int low, high, midlow

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

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

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

热点排行