关于斐波那契查找的理论完全解析:https://www.cnblogs.com/bethunebtj/p/4839576.html
代码:
/*斐波那契查找*/
int Fibonacci_Search(int *a, int n, int key)
{
int low, high, mid, i, k;
low = 1; /*定义最低下标为记录首位*/
high = n; /*定义最高下标为记录末位*/
k = 0;
while (n > F[k] - 1)
k++;
for (i = n; i < F[k] - 1; i++)
a[i] = a[n];
while (low <= high)
{
mid = low + F[k - 1] - 1;
if (key < a[mid])
{
high = mid - 1;
k = k - 1;
}
else if (key > a[mid])
{
low = mid + 1;
k = k - 2;
}
else
{
if (mid <= n)
return mid;
else
return n;
}
}
return 0;
}