解法一:使用递归调用:
代码如下:
static int LiangfenChaZhao(int low, int high, int[] a, int value)
{
if (low > high)
return -1;
int i = (low + high) / 2;
if (a[i] >= value)
{
if (a[i] == value)
return i;
else
return LiangfenChaZhao(low, i - 1, a, value);
}
else
{
return LiangfenChaZhao(i + 1, high, a, value);
}
}
解法二、循环遍历:
static int testforfun(int[] a, int value)
{
int lower = 0;
int high = a.Length-1;
int middle;
while (lower<=high)
{
middle = (high + lower) / 2;
if (a[middle] == value)
return middle;
if (a[middle] > value)
{
high = middle-1;
}
if (a[middle] < value)
{
lower = middle+1;
}
}
return -1;
}