/** * ibs.c * A simple integer binary search. */ #include #include "ibs.h" // +---------------+-------------------------------------------------- // | Local Helpers | // +---------------+ static int ibs_core (int A[], int len, int v, int lb, int ub) { // Special case: Not there if (lb > ub) return -1; int mid = (lb + ub) / 2; // fprintf (stderr, "Looking in position %d of size %d array.\n", mid, len); if (A[mid] == v) return mid; else if (A[mid] < v) return ibs_core (A, len, v, mid+1, ub); else return ibs_core (A, len, v, lb, mid-1); } // ibs_core // +--------------------+--------------------------------------------- // | Exported Functions | // +--------------------+ int ibs (int A[], int len, int v) { return ibs_core (A, len, v, 0, len); } // ibs