//有序表查找——插值查找
int Interpolation_Search(int *array,int len,int key)
{
int low,high,mid;
low = 1;
high = len;
while(low <= high)
{
mid = low + (key - array[low])/(array[high] - array[low]) * (high - low); //插值
if(key < array[mid])
high = mid - 1;
else if(key > array[mid])
low = mid + 1;
else
return mid
}
return 0;
}
int Interpolation_Search(int *array,int len,int key)
{
int low,high,mid;
low = 1;
high = len;
while(low <= high)
{
mid = low + (key - array[low])/(array[high] - array[low]) * (high - low); //插值
if(key < array[mid])
high = mid - 1;
else if(key > array[mid])
low = mid + 1;
else
return mid
}
return 0;
}