非递归:
int Binsearch(int * pArr, int low, int high,int key)
{
int mid = (low + high) / 2;
while (low <= high)
{
if (pArr[mid] > key)
high = mid - 1;
else if (pArr[mid] < key)
low = mid + 1;
else
return mid;
mid = (low + high) / 2;
}
return -1;
}
递归:
int Binsearch(int * pArr, int low, int high, int key)
{
if (low <= high)
{
int mid = (low + high) / 2;
if (pArr[mid] > key)
return Binsearch(pArr, low, mid - 1, key);
else if (pArr[mid] < key)
return Binsearch(pArr, mid + 1,high, key);
else
return mid;
}
return -1;
}