c查找算法——斐波拉契查找

//斐波拉契数列
FibonacciArray[] = {0,1,1,2,3,5,8,13,21,34,55,...} //计算斐波拉契数列
//有序表查找——斐波拉契查找
int Fibonacci_Search(int *array,int len,int key)
{
int low,high,mid,i,k = 0;
low = 1;
high = len;
while(len > FibonacciArray[k] - 1) //计算len位于斐波拉契数列的位置

{

k++;

}

for(i = len;i//将不满的数值补全

{

array[i] = array[len];

}
while(low <= high)
{
mid = low + FibonacciArray[k - 1] - 1; //计算当前分隔的下标
if(key < array[mid]) //查找记录小于当前分隔记录
{
high = mid - 1;
k = k - 1;
}
else if(key > array[mid])
{
low = mid + 1;
k = k - 2;
}
else
{
if(mid <= len)
return mid;
else
return len;
}
}
return 0;
}

你可能感兴趣的:(C算法)