非递归算法
int binary_search(int* a, int len, int key)
{
int low = 0;
int high = len-1;
int mid;
while (low <= high)
{
mid = (low+high)/2;
if (key < a[mid])
high = mid-1;
else if (key > a[mid])
low = mid+1;
else
return mid;
}
return -1;
}
递归算法:
int binary_search2(int* a, int low, int high, int key)
{
if (low <= high)
{
int mid = (low + high)/2;
if (key < a[mid])
return binary_search2(a, low, mid-1, key);
else if (key > a[mid])
return binary_search2(a, mid+1, high, key);
else
return mid;
}
else
return -1;
}