一个很简单的问题,关于二分查找
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;}if (x < v[mid]) high = mid - 1; else if (x > v[mid]) low = mid + 1;
[解决办法]
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;}
[解决办法]
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