/**
* 折半查找
*
* @param a : 有序数组
* @param n : 数组长度
* @param key : 待查找的关键字
*/
int Binary_Search(int[] a, int n, int key)
{
int low = 1;
int high = n;
int mid;
while (low <= hight)
{
mid = (low + high) / 2; // 折半
if (a[mid] == key)
{
return mid;
} else if (a[mid] > key) // 在前半区间继续查找
{
high = mid - 1;
} else // 在后半区间继续查找
{
low = mid + 1;
}
}
return 0; // 查找失败
}
/**折半查找 改进之
*
* 插值查找
*/
mid = low + (key-a[low])/a[high]-a[low] * (high-low);