Write a version of binary search with only one test inside the loop.

/*binsearch: find x in v[0] <= v[1] <= ....... <= v[n -1]   */
int binsearch(int x, int v[], int n){
    int low, high, mid;

    low =0;
    high = n -1;
    mid = (low + high) /2;
    while (low <= high && x != v[mid]){
         if (v < v[mid])
               high = mid - 1;
         else
              low = mid + 1;
         mid = (low + high) /2;
    }
     if (x == v[mid])
           return mid;     /* found match */
     else
          return -1;     /* no match */
}

Leave a comment