斐波那契算法的理解

news2024/11/28 14:14:47

1.斐波那契数列 :

数组:int[] F={1, 1, 2, 3, 5, 8, 13, 21, 34, 55 };

特点:

从第三个数开始,后边每一个数都是前两个数的和 。F[k]=F[k-1]+F[k-2];

如图所示:

        ①low、mid、high都是F数组的索引,F[k]-1表示长度。

        ②为了方便计算出mid,变形:F[k]-1 = (F[k-1]-1) + (F[k-2]-1) + 1;(多出来的1,可以当作mid)

        ③high=(F[k]-1)-1;

        mid=low+F[k-1]-1;

2.需求:

        现在有一个数组int[] arr={1,8,10,89,1000,1234},长度n=6;

        需要定义一个方法,从arr数组中找到数值为80(key=80),

        若有,则返回索引,若没有,就返回-1。

分析:

①黄金分割点: 

        黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之比,其比值约为1:0.618或1.618:1。

结论:

        只要顺序表的长度是F[k]-1,就可以分成两段:较大部分F[k-1]-1,和较小部分F[k-2]-1。

③黄金分割点,是按照长度来划分,与索引有密切关系。

        一旦确定了数组arr的黄金分割点mid,之后就可以拿着我们要找的80与黄金分割点mid索引的元素值比较。再之后与二分查找类似。

④arr数组的长度n,是固定的值6,由于(F[k]-1)是不定的,最大值可以非常大,可看成无限大。

        所以总是会存在:(F[k]-1)的值刚好大于或等于长度6。

        arr数组的长度n确定了,那么(F[k]-1)的值也就确定了。

因此只要arr数组中元素个数n能达到此时的(F[k]-1),就可以把arr数组分成两段,从而确定黄金分割点。

⑤新建一个数组brr,长度为(F[k]-1)。然后把arr这个数组中的数据全都拷贝到brr数组中,不足的部分先用0补充,最后把0换成arr的最后一个元素来补充(即arr[high])。

拿着key=80,与brr[mid]比较,

若key大,就把黄金分割点及右侧的部分都删除。

若key小,就把黄金分割点及左侧的部分都删除。

然后产生新的黄金分割点,再比较,直至两者相等,

若最终一直没找到,low>high就停止寻找。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础实验篇 | 课程总体介绍(一)

本讲主要介绍多旋翼的特点及选用多旋翼作为实验平台的原因、对于无人系统教育的一些新需求、RflySim平台对于飞控的底层控制算法的开发优势、本期平台课程的设置、以及如何开发自驾仪系统。 相较于固定翼和直升机,多旋翼具有机械结构简单、 易维护的优点。以四旋翼…

操作Arrays.asList的list报UnsupportedOperationException的坑

Arrays.asList() 将数组转换成List集合 /*** Returns a fixed-size list backed by the specified array. (Changes to* the returned list "write through" to the array.) This method acts* as bridge between array-based and collection-based APIs, in* com…

通过Python封装商品ID获取阿里巴巴商品详情数据,阿里巴巴商品详情数据API接口,阿里巴巴API接口

目的:通过Python封装商品ID获取阿里巴巴商品详情数据,本文将给出Python代码的一些思路和示例。 首先,你需要找到获取阿里巴巴商品详情数据的API接口。阿里巴巴开放平台提供了一些API接口,例如阿里巴巴开放平台商品API&#xff0c…

软件开发项目成本控制的7个重点

1、精细计划预算和管控机制 制定详细的项目计划和预算,包括资源需求、人力资源、时间表和财务预测等,以确保项目不会超出预算。实时跟踪项目的实际开支和进度,并对计划进行调整,以便更好地管理成本。 软件开发项目成本控制的7个重…

MongoDB Study Notes

文章目录 1 MongoDB快速入门1.1 什么是MongDB1.2 部署安装——基于docker1.3 基本概念1.4 基本操作1.4.1 查看所有数据库1.4.2 切换数据库1.4.3 创建数据库1.4.4 删除数据库1.4.5 查看数据库中表1.4.6 新增数据1.4.7 查询数据1.4.8 更新数据1.4.8.1 更新不存在字段1.4.8.2 更新…

Nginx 504 gateway timeout

方案 调整这几个参数来调大nginx的超时时间。 proxy_connect_timeout proxy_send_timeout proxy_read_timeoutnginx 三个代理超时时间配置 proxy_connect_timeout 60s; Defines a timeout for establishing a connection with a proxied server. It should be noted that thi…

【期末划重点】计算机英语(2)(更新中)

阿金的计算机英语,线下考试版~ 时隔半年,又开始赌徒模式啦 这次尝试用大数据文本分析,精准备考 欢迎补充 2023计英期末考赌徒版 Part 1 词汇题(20题,40分)1、词库说明2、本题答题技巧3、背词方法4、完整词库…

【Python实战】Python采集情感音频

成年人的世界真不容易啊 总是悲伤大于欢喜 爱情因为懵懂而快乐 却走进了复杂和困惑的婚姻 前言 我最近喜欢去听情感类的节目,比如说,婚姻类,我可能老了吧。我就想着怎么把音乐下载下来了,保存到手机上,方便我们业余时…

jdk配置语句以及idea配置问题idea科学使用

一、第一步上链接 官网地址,不过每次都在变版本不过都一样没事: https://www.oracle.com/java/technologies/downloads/ idea2021官网 https://www.jetbrains.com/zh-cn/idea/download/other.html 你可以下载右边付费的版本,如果想下载左边…

IPO观察丨绿源持续推进IPO,这次不止“一部车能骑10年”

近期,国内两轮电动车行业又有新动态。业内老牌企业绿源集团更新招股书,继续推进上市进程,中信建投国际担任保荐人。 其实去年11月,绿源已向港交所递交招股书,只不过受若干原因影响,在今年5月失效。当然&am…

synchronized简单理解

一、简述 1.1 synchronized介绍 synchronized是一种互斥锁,也成为同步锁,它的作用是保证在同一时刻,被修饰的代码块或方法只会有一个线程执行,以到达保证并发安全效果。在JDK1.6以前,很多人称之为重量级锁&#xff0…

作为一名仓库管理人员,如何有效地管理仓库?

作为一名仓库管理人员,如何有效地管理仓库? 有效仓库管理主要可以分为四个方面: 出入库 库存调拨 库存盘点 虚拟库存/实际库存管理 当然仓库管理最基本的硬件条件还是需要准备好的,比如将仓库分一下区域,以便之后商…

layui(3)——内置模块弹出层

弹出层 1.基础参数 使用模块layer layui.use(layer, function(){var layer layui.layer;}); <script>layui.use(layer, function () {var layer layui.layer;layer.open({// layer提供了5种层类型。可传入的值有&#xff1a;0&#xff08;信息框&…

极简操作!跟着官方教程,下载并使用汉化版Figma!

随着云端协作设计工具的发展&#xff0c;Figma 作为一款基于云端的国外云端协作工具&#xff0c;尽管无需下载即可在线使用&#xff0c;但在国内却常常遇到加载缓慢、需要刷新重进的问题。此外&#xff0c;Figma 在实际使用过程中&#xff0c;常常需要搭配其他软件或第三方插件…

vue3+element plus,使用分页total修改成中文

vue3element plus&#xff0c;使用分页total修改成中文 使用element plus的分页功能 el-pagination 的时候&#xff0c;total属性显示是英文 这是我建的一个新项目&#xff0c;总数显示的Total 1000 我们的需求是显示中文&#xff0c;共 1000 条 这个就很尴尬&#xff0c;组件…

JAVA基础,区别于C++

JAVA 基础 1. 数据类型 字节型 byte 1 字节 -128~127 短整型 short 2 字节 -32768~32767 整型 int 4 字节 -2147483648~2147483647 长整型 long 8 字节 -9223372036854775808L~92…

初学Nginx要掌握哪些概念?

文章目录 为什么要使用Nginx&#xff1f;什么是Nginx&#xff1f;Nginx的作用&#xff1f;反向代理负载均衡动静分离 为什么要使用Nginx&#xff1f; 小公司项目刚刚上线的时候&#xff0c;并发量小&#xff0c;用户使用的少&#xff0c;所以在低并发的情况下&#xff0c;一个…

iNotes(WebMail)中的附件显示

大家好&#xff0c;才是真的好。 1995年Domino R4/4.5中加入了HTTP功能&#xff0c;从此便支持从用户从Web浏览器上查看邮件.一开始称之为Domino Web Access&#xff0c;后来更名为IBM Lotus iNotes&#xff0c;简称iNotes&#xff0c; 对于不熟悉Notes/Domino的人来说&#…

达梦数据库dblink测试(DM-ORACLE19c及DM8-DM8)

目录 DM与DM创建DBLINK. 3 一、配置203服务器... 3 1、主服务器203开启mal服务... 3 2、主服务器203配置dmmal.ini文件... 3 3、重启203数据库... 4 二、配置200服务器... 4 三、创建dblink. 4 DM与Oracle数据库创建dblink. 5 一、DM服务器&#xff1a;... 6 1、初始…

祝愿莘莘学子高考顺利!Good luck on your Gaokao!

《登科后》 唐孟郊 昔日龌龊不足夸&#xff0c;今朝放荡思无涯。 春风得意马蹄疾&#xff0c;一日看尽长安花。 Gone are all my past woes! What more have I to say? My body and my mind enjoy their fill today. Successful, faster runs my horse in vernal breeze;…