数据结构与算法—斐波那契查找2
来源:互联网 发布:淘宝联盟推广教程视频 编辑:程序博客网 时间:2024/06/07 00:04
/**************************************************
斐波那契查找
low=1;high=F(k)-1=n; // 设置初始区间
M=F(k)-1;f=F(k-1)-1; // M 为表长,f 为取中点的相对偏移量
当low>high 时,返回查找失败信息// 表空,查找失败
low≤high,mid=low+f; // 取中点
a. 若kx<tbl.elem[mid].key,则
p=f;f=M-f-1; // 计算取中点的相对偏移量
M=p; // 调整表长F
high=mid-1;转② // 查找在左半区进行
b. 若kx>tbl.elem[mid].key,则
M=M-f-1; // 调整表长M
f=f-M-1; // 计算取中点的相对偏移量
low=mid+1;转② // 查找在右半区进行
c. 若kx=tbl.elem[mid].key,返回数据元素在表中位置// 查找成功
***************************************************/
//符合限制条件,n为斐波那契数-1
#include <stdio.h>
void feibonaqie(int *f) //产生斐波那契数列
{
int i;
f[0] = 1;
f[1] = 1;
for(i = 2; i < 10; i++)
{
f[i] = f[i-1] + f[i-2];
}
}
int feibonaqiechazhao(int *a, int n, int key) //斐波那契额查找
{
int low = 1;
int high = n;
int i,f,M,p,k = 0;
int mid, F[10];
feibonaqie(F);
for(i = 0; i < 10; i++)
{
printf("%d ",F[i]);
}
printf("\n");
while(n > F[k] - 1)
{
k++;
}
if(low > high)
{
return -1;
}
f = F[k-1] - 1; //4
M = F[k] - 1; //7
while(low <= high)
{
mid = low + f;
if(key == a[mid])
{
return mid;
}
if(key < a[mid])
{
p = f;
f = M - f -1;
M = p;
high = mid -1;
}
if(key > a[mid])
{
M = M - f - 1;
f = f - M - 1;
low = mid + 1;
}
}
return -1;
}
int main()
{
int i,flag;
int array[12] = {2,3,4,5,6,7,8,9,10,11,12,13};
for(i = 0; i < 12; i++)
{
printf("%d ",array[i]);
}
printf("\n");
flag = feibonaqiechazhao(array, 12, 11);
if(flag != -1)
{
printf("The find is successful!\n");
printf("The number is array[%d]\n",flag);
}
else
{
printf("The find is wrong!\n");
}
return 0;
}
- 数据结构与算法—斐波那契查找2
- 数据结构与算法—斐波那契查找
- 数据结构与算法-查找-斐波那契查找
- 数据结构与算法13:折半查找、差值查找和斐波那契查找
- 【数据结构与算法】【查找】斐波那契查找的代码实现
- 数据结构学习6——有序表查找(折半查找与斐波那契查找)
- 查找算法—斐波那契查找算法分析与实现(Python)
- 算法--查找--斐波那契查找
- 数据结构之查找——折半查找、插值查找、斐波那契查找
- 斐波那契查找(数据结构)
- 数据结构 斐波那契查找
- Java数据结构与算法---斐波那契数列Fibonacci
- 数据结构 插值查找 斐波那契查找
- 一步一步复习数据结构和算法基础-斐波那契查找法
- 斐波那契查找算法
- 斐波那契查找算法
- 斐波那契查找算法分析
- 斐波那契查找算法解析
- Ubuntu下的超级终端:minicom的使用方法
- Merge k Sorted Lists
- Oracle SQL Loader的详细语法
- 利用GetPrivateProfileString读取配置文件(.ini)
- Arcgis ios skd 中 设置背景颜色 和方格 的颜色
- 数据结构与算法—斐波那契查找2
- Puppet报错Failed to realize virtual resources
- android基础知识06:intent和intentfilter
- hdu4405 Aeroplane chess
- 视频音频常用编码解码介绍
- 一次大量Library Cache lock的处理
- Parcelable接口的使用
- win8 万能驱动 32位,64位最新版 显卡驱动 网卡驱动 装机必备
- JAVA书籍推荐