看《算法》记录书中学习到的算法,并用C#实现
/// <summary>
/// 二分查找算法==输入一个数字,然后检索该值在数组中的index并返回index/// </summary>
/// <param name="key"></param>
/// <param name="array">输入的数组必须是有序的</param>
/// <returns></returns>
public static int binarySearchRank(int key, int[] array)
{
if (array == null || array.Length == 0)
return -1;
int lowIndex = 0;
int highIndex = array.Length - 1;
while (lowIndex <= highIndex)
{
int midIndex = lowIndex + (highIndex - lowIndex) / 2;
if (key < array[midIndex])
highIndex = midIndex - 1;
else if (key > array[midIndex])
lowIndex = midIndex + 1;
else
return midIndex;
}
return -1;
}