美文网首页算法
斐波那契查找

斐波那契查找

作者: 海之梦17 | 来源:发表于2017-05-23 15:13 被阅读12次

斐波那契查找的前提是待查找的查找表必须顺序存储且有序

相对于折半查找,一般将待比较的key值与第mid=(low+high)/2位置的元素比较,比较结果分三种情况

1)相等,mid位置的元素即为所求

2)>     ,low=mid+1;

3)  <     ,high=mid-1;

斐波那契查找与折半查找很相似,他是根据斐波那契序列的特点对有序表进行分割的。他要求开始表中记录的个数为某个斐波那契数小1,及n=F[k]-1;

开始将key值与第F[k-1]-1位置的记录进行比较(即mid=low+F[k-1]-1),比较结果也分为三种

1)相等,mid位置的元素即为所求

2)>   ,low=mid+1,k-=2; (注意:此处是k=k-2)

说明:low=mid+1说明待查找的元素在[mid+1,hign]范围内,k-=2 说明范围[mid+1,high]内的元素个数为n-F[k-1]=F[k]-1-F[k-1]=F[k]-F[k-1]-1=F[k-2]-1个,所以可以递归的应用斐波那契查找

3)<    ,high=mid-1,k-=1;  (此处是k=k-1)

说明:low=mid+1说明待查找的元素在[low,mid-1]范围内,k-=1 说明范围[low,mid-1]内的元素个数为F[k-1]-1

个,所以可以递归 的应用斐波那契查找

代码如下:

相关文章

  • 折半查找和斐波那契查找的对比测试笔记

    先上两者的 Python 代码。折半查找: 斐波那契查找: 根据资料显示,斐波那契查找的平均效率会比折半查找更高。...

  • 有序表查找 - 斐波那契查找

    了解斐波那契查找之前先来了解下斐波那契额数列。 斐波那契数列,又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁...

  • 斐波那契查找算法

    算法原理: 斐波那契查找就是在二分查找的基础上根据斐波那契数列进行分割的。 构建一个斐波那契数列 扩展被查询数列:...

  • 斐波那契数列

    斐波那契数列:1 1 2 3 5 8 13...这样一个数列就是斐波那契数列 查找指定位数上斐波那契数列中的值

  • 如果说每天都在处理昨天和前天产生的Bug,那么是一个什么类型的程

    斐波那契程序员。具体参考斐波那契数列。 斐波那契数列

  • 斐波那契查找

    斐波那契查找的前提是待查找的查找表必须顺序存储且有序。 相对于折半查找,一般将待比较的key值与第mid=(low...

  • 斐波那契查找

    相对于二分查找和差值查找,斐波那契查找的实现略显复杂。但是在明白它的主体思想之后,掌握起来也并不太难。 既然叫斐波...

  • 查找 --- 斐波那契

    1. 引子 二分查找是进行加法与除法的运算 mid = (low +high)/2插值查找是进行四则运算的 mid...

  • 斐波那契查找

    Introduce 黄金分割查找,区别于插值查找找0.5,斐波那契查找找0.618。 原理介绍 推导得出只要顺序数...

  • 算法学习--斐波那契算法

    什么是斐波那契查找 斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、···...

网友评论

    本文标题:斐波那契查找

    本文链接:https://www.haomeiwen.com/subject/chxgxxtx.html