折半查找,迭代和递归
//iterative binary search
int searchBinaryIt (int *array, int val, int low, int high)
{
while (low <= high)
{
int middle = (low + high) / 2;
if (array[middle] == val)
return middle;
else if (array[middle] > val)
high = middle - 1;
else if (array[middle] < val)
low = middle + 1;
}
return -1;
}
//recursive binary search
int searchBinaryRe (int *array, int val, int low, int high)
{
if (low > high)
return -1;
int middle = (low + high) / 2;
if (array[middle] == val)
return middle;
else if (array[middle] > val)
return searchBinaryRe(array, val, low, middle - 1);
else if (array[middle] < val)
return searchBinaryRe(array, val, middle + 1, high);
}