这是斐波那契查找的理解难点。

这是为了能正确递归计算mid值,看下图可发现 f[k]-1 = (f[k-1] + f[k-2]) - 1 = (f[k-1]-1) + 1 + (f[k-2]-1),中间的1就是我们二分的锚点mid,如果目标在左区,数组长度就缩到(f[k-1]-1),如果在右区,数组长度就缩到(f[k-2]-1),否则就等于mid完成查找。而(f[k-1]-1)又能拆成(f[k-2]-1)+1+(f[k-3]-1),这样递归分割下去就能不断的缩小区间直至找到目标。

假如扩充到f[k],f[k] = f[k - 1] + f[k - 2],少了一个mid点。
假如扩充到f[k + 1]点,f[k + 1] = f[k] + f[k - 1],少了一个mid点。
假如扩充到f[k] + 1点,f[k] + 1 = f[k - 1] + 1 + f[k - 2],这里mid点有了,但是接下来f[k - 1]和f[k - 2]都无法拆分出mid点。

斐波那契查找算法中为什么需要把数组长度扩充到f[k]-1而不是f[k]或者f[k+1]相关推荐

  1. 查找算法之斐波那契查找算法

    斐波那契(黄金分割法)查找算法 (一)算法简介 (1)斐波那契数列 在讲算法之前,我们先介绍一下斐波那契数列,该数列公式为F(K) = F(k-1) + F(k-2),即 1.1.2.3.5.8.13 ...

  2. 斐波那契查找算法解析

    文章目录 前言 一.斐波那契数列 二.斐波那契查找算法 前言 学数据结构的时候被斐波那契查找算法困扰,刚开始难以理解,脑袋有点懵,翻看了许多大佬的博文,加上自己的理解发了出来 一.斐波那契数列 我们先 ...

  3. 007.斐波拉契查找算法

    1. 斐波拉契查找算法 斐波拉契查找算法也称为黄金分割查找算法,它是在折半查找算法的基础上根据斐波拉契数列进行分割.折半法是取排序好的中间值进行分割,而斐波拉契查找算法是根据黄金分割点进行分割. 黄金 ...

  4. 【数据结构与算法】插值查找算法、斐波那契查找算法(黄金分割法)的介绍和程序实现

    目录 1. 插值查找算法 1.1 插值查找算法的介绍 1.2 插值查找算法的程序实现 2. 斐波那契查找算法 2.1 斐波那契查找算法的介绍 2.2 斐波那契查找算法的程序实现 1. 插值查找算法 1 ...

  5. 查找算法:斐波那契查找算法实现及分析

    斐波那契查找算法介绍 斐波那契查找法肯定与斐波那契相关嘛,斐波那契数列 又称黄金分割数列.所以我们先把黄金分割弄懂,后面代码才能看得懂!黄金分割点大家都知道吧.1:0.618或者1.618:1,我们的 ...

  6. 顺序,二分,插值,斐波那契 查找算法

    总结: 博客详细描述:(http://www.cnblogs.com/maybe2030/p/4715035.html#_label4) 关注: 二分查找.插值查找以及斐波那契查找都可以归为一类插值查 ...

  7. 二十三、斐波那契查找算法

    一.基本介绍 1.黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比.取其前三位 数字的近似值是 0.618.由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为 ...

  8. 查找算法-(顺序查找、二分查找、插值查找、斐波那契查找)

    1)顺序查找或叫线性查找 就是顺序遍历匹配 2)二分查找 package search;public class BinarySearch {/*** 二分查找数组必须有序*//**** @param ...

  9. 【Java数据结构与算法】第九章 顺序查找、二分查找、插值查找和斐波那契查找

    第九章 顺序查找.二分查找.插值查找和斐波那契查找 文章目录 第九章 顺序查找.二分查找.插值查找和斐波那契查找 一.顺序查找 1.基本介绍 2.代码实现 二.二分查找 1.基本介绍 2.代码实现 三 ...

  10. JAVA数据结构与算法之斐波那契查找(黄金分割点)

    前言 最近面临毕业就业,在复习数据结构与算法,为了更好地掌握,加深印象,所以决定写一些博客来知识复现. 温馨提示:这篇博客可能不适合刚学数据结构的新手. 算法的简单介绍 黄金分割点是指把一条线段分割为 ...

最新文章

  1. 【摄像头】宽动态范围
  2. 2017-2018-1 20155321 《信息安全系统设计基础》课下作业3
  3. Mysql---之Mysqladmin修改账号密码方式
  4. sqlserver复习总结
  5. uni-app小程序本地打包超过2M不能预览问题;小程序打包过大不能预览和真机调试;uni-app分包;
  6. xcode+文字支持html元素,iOS使用UITextview实现富文本编辑
  7. Redis-哨兵机制,实现高可用
  8. realsched.exe进程
  9. 【语音分析】基于matlab线性预测系数对比【含Matlab源码 557期】
  10. 卸载有卸载密码和安全策略的OFFICESCAN客户端(破解)
  11. MinDoc 权限的简单配置
  12. 求职面试PPT模板推荐
  13. 0723电话面试整理
  14. GATK-HaplotypeCaller 变异检测详解
  15. 多台路由器,不同网段的设备之间如何互访?
  16. 万字面试分享贴!从十二个角度解析面试全流程!附互联网公司Offer难度系数分析...
  17. Windows NT引导过程源代码分析
  18. Mysql高性能优化
  19. AFNetWorking改为同步请求
  20. Open3D RANSAC拟合空间直线

热门文章

  1. 安装和启动tftp-server服务器及可能出现Redirecting to /bin/systemctl restart xinetd.service问题的解决方式...
  2. Unix环境高级编程(十九)终端I/O
  3. 读Zepto源码之Data模块
  4. HTML5 input新增属性
  5. 自动登录Windows系统
  6. Qt 使用vs调试的方法
  7. 11月26日struts项目练习
  8. 6.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Lua 语言
  9. 5. Javascript 错误和异常
  10. 第4讲 The Zend Framework MVC Architecture