Solution:
// Search value in array a of length size
int binarySearch( int* a, int value, int low, int high, int size)
{
while (low < high)
{
int mid = low + ((high - low) / 2); // Avoid overflow (low + high)
if (a[mid] < value)
low = mid + 1;
else
//can't be high = mid-1: as a[mid] >= value,
//so high can't be < mid as a[mid] can be = value
high = mid;
}
// high == low
if ((low < size) && (a[low] = = value))
return low; // found
else
return -1; // not found
}
No comments:
Post a Comment