感谢尚硅谷韩顺平老师深入细致的讲解

斐波那契(黄金分割法)查找基本介绍:

黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位数字的近似值是0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。这是一个神奇的数字,会带来意向不大的效果。

斐波那契数列 {1, 1, 2, 3, 5, 8, 13, 21, 34, 55 } 发现斐波那契数列的两个相邻数 的比例,无限接近 黄金分割值0.618

斐波那契查找原理与前两种相似,仅仅改变了中间结点(mid)的位置,mid不 再是中间或插值得到,而是位于黄金分 割点附近,即mid=low+F(k-1)-1 (F代表斐波那契数列),

如图所示 对F(k-1)-1的理解: 由斐波那契数列 F[k]=F[k-1]+F[k-2] 的性质,可以得到 (F[k]-1)=(F[k-1]-1)+(F[k-2]-1)+1 。该式说明:只要顺序表的长度为F[k]-1,则可以将该表分成长度为F[k-1]-1和F[k-2]-1的两段,即如上图所示。

从而中间位置为mid=low+F(k-1)-1.

类似的,每一子段也可以用相同的方式分割 但顺序表长度n不一定刚好等于F[k]-1,所以需要将原来的顺序表长度n增加至F[k]-1。这里的k值只要能使得F[k]-1恰好大于或等于n即可,由以下代码得到,顺

数据结构和算法-查找算法之黄金分割查找法相关推荐

  1. 数据结构-常用的查找算法

    总第124篇/张俊红 本篇讲讲数据结构里面常用的几个查找算法,数据结构理论篇系列差不多接近尾声了,接下来会分享一些比较特殊的概念,比如KMP.郝夫曼树等等,讲完概念以后会进入刷题阶段.刷题会用Pyth ...

  2. 数据结构与算法-查找算法(二分查找,插值查找,斐波那契(黄金分割法)查找)

    查找算法 以下三种算法的基本思想相同,都是利用递归来寻找 二分查找 思路分析 1.首先确定该数组的中间下标,min = (left + right) / 2 2.然后让需要查找的的数findVal和a ...

  3. 数据结构与算法【Java】06---七大查找算法总结

    文章目录 数据结构与算法[Java]06---查找算法总结 1.查找算法简介 1.1.查找的定义 1.2.查找算法分类 1.3.常用查找算法 2.线性查找算法 2.1.线性查找简介 2.2.线性查找代 ...

  4. 数据结构与算法--第17篇(查找算法)

    数据结构与算法 一,查找算法 1,简介: 2,顺序查找: 3,二分查找: 4,插值查找: 5,斐波那契(黄金分割法)查找: 一,查找算法 1,简介: 查找算法:常分为四种: 顺序查找(线性查找): 二 ...

  5. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...

  6. Java高级工程师必备数据结构算法高效查找算法原理分析与实现

    查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找本文主要介绍比较难理解的树表查找和哈希查找. 查找定义:根据给定的某个值,在查找表中确定一个 ...

  7. 数据结构排序、查找算法

    前言 这是数据结构的实验四的题目. 为了自己能在繁杂的文件中顺利.快速地找到自己熟悉的排序.查找算法代码,故借CSDN平台存放本人写的代码.另外,还请有缘看到此文章的同行们能多多指点. 非常感谢. 1 ...

  8. 数据结构与算法 | 斐波那契查找

    要想能够理解这一算法,需要先了解 1.二分查找 https://blog.csdn.net/qq_35423154/article/details/101383518 2.斐波那契数 https:// ...

  9. 数据结构与算法---查找算法(Search Algorithm)

    查找算法介绍 在java中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 1)线性查找算法 示例: 有一个数列: {1,8, 10, 89, 1000, 123 ...

  10. 数据结构之查找算法:顺序查找

    查找算法:顺序查找 思维导图: 顺序查找的定义: 顺序查找的代码实现: 顺序查找的性能: 思维导图: 顺序查找的定义: 顺序查找的代码实现: typedef struct { //查找表数据结构int ...

最新文章

  1. CUDA运行时 Runtime(一)
  2. CDays–4 习题六(修改文本)及相关内容解析。
  3. IIS设定 CORS 跨域请求(跨域)
  4. eclipse代码自动提示
  5. 【WC2016】论战捆竹竿
  6. 也可以改为while(input[0])或while(cininput[0])
  7. Javascript学习笔记1 数论
  8. ukt机器人_doc/readme/feishu.md · 贫道法号-乱来/PrometheusAlert - Gitee.com
  9. 如果你跟夕小瑶恋爱了...(上)
  10. java怎么设置404界面_如何使用Spring MVC显示自定义的404 Not Found页面
  11. 弹出层中都可以用的复制功能
  12. Spring mvc框架下使用kaptcha生成验证码
  13. 从零开始--系统深入学习android(实践-让我们开始写代码-新手指南-3.Hello,本地化)...
  14. 简单电话系统的电话数量分析
  15. RSA加密解密(附源码工程)
  16. RecyclerView混合布局
  17. cisco ios 权限等级详解
  18. python的messagebox的用法_PyQt5快速上手基础篇5-messagebox用法
  19. JSON.stringify(value [, replacer] [, space])
  20. 用计算机公式计算优良,『excel怎样合并单元格』如何在EXCEL中如何用公式计算全年级各班各科平均分、优秀率、合格率的方法...

热门文章

  1. 两人互殴打架派出所如何处理
  2. 计算机网络 专有名词英文缩写
  3. 愤怒的导数:一点可导和邻域内可导能推出来什么?
  4. clojure-jack-in : error in process filter: open-network-stream: make client process failed: Connecti
  5. 如何在MATLAB下载附加功能(下载Min-GW总结)
  6. GET请求淘宝H5页面获取商品信息
  7. 第二章:如何解构一篇目标论文,从而开启自己的论文写作
  8. 计算机硬盘应该什么格式化,磁盘格式化是什么意思?快速格式化和一般格式化有什么区别...
  9. Linux如何不格式化挂载硬盘,linux下格式化硬盘与挂载硬盘
  10. 第三届上海大学生网络安全