//利用二分法查找有序数组中是否含有给定Value
class AlgorithmByZXQ
{
/// <summary>
/// 二分法查找数组中某一数值
/// </summary>
/// <param name="array"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="key"></param>
/// <returns></returns>
public static int BinarySearch(int []array,int start,int end,int key)
{
if (start > end)
return -1;
int mid = (start + end) / 2;
if (key == array[mid])
return mid;
else if (key > array[mid])
return BinarySearch(array, mid + 1, end, key);
else
return BinarySearch(array, start, mid - 1, key);
}
public static int BinarySearch2(int []array,int arrSize,int key)
{
if (array == null || arrSize <= 0)
return -1;
int start = 0;
int end = arrSize - 1;
int mid = 0;
while(start<=end)
{
mid = (start + end) / 2;
if (key == array[mid])
return mid;
else if (key > array[mid])
start = mid + 1;
else
end = mid - 1;
}
return -1;//一定要加,若key没有找到则返回-1;
}
}
//测试代码如下:
public void test()
{
int[] arr=new int[10];
for(int i = 0; i < 10; i++)
{
arr[i] = i;
}
Console.WriteLine(AlgorithmByZXQ.BinarySearch(arr, 0, 9, 4));
Console.WriteLine(AlgorithmByZXQ.BinarySearch2(arr, arr.Length, 7));
}