#include int binsearch(int x, int v[], int n); int binsearch_original(int x, int v[], int n); int main() { int v[] = {1,2,3,4,5}; int x = 2; int n = 5; printf("%d\n%d\n", binsearch_original(x, v, n), binsearch(x, v, n)); } 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; else low = mid + 1; } return (x == v[low]) ? low : -1; } /* * Find x in v[0] <= v[1] <= ... <= v[n-1] */ int binsearch_original(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 // found match return mid; } return -1; // no match }