斐波那契查找

来源:互联网 发布:java web后端 编辑:程序博客网 时间:2024/05/16 15:11


int F[10];


//斐波那契查找
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)//计算n位于斐波那契数列的位置
{
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;//最高下标调整到分隔下标mid-1处
k = k - 1;//斐波那契数列下标减一位
}
else if (key > a[mid])//如果查找记录大于当前分隔记录
{
low = mid + 1;//最低下标调整到分隔下标mid+1处
k = k - 2;//斐波那契数列下标减两位
}
else
{
if (mid == n)
return mid;//相等了就说明mid是要查找到的位置
else
return n;
}
}


}
0 0
原创粉丝点击