你好!斐波那契查找【JAVA】

1.有幸遇见

斐波那契查找算法,也称黄金分割查找算法,是一种基于斐波那契数列的查找算法。与二分查找类似,斐波那契查找也是一种有序查找算法,但它的查找点不是中间位置,而是根据斐波那契数列来确定,因此又称为黄金分割查找。

2.原理讲解 

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

注:顺序表长度n不一定刚好等于F[K]-1,所以需要将原来的顺序表长度n增加至F[k]-1。

3.构建斐波那契数组 

 public static int[] fib() {int[] f = new int[maxSize];f[0] = 1;f[1] = 1;for (int i = 2; i < f.length; i++) {f[i] = f[i - 1] + f[i - 2];}return f;}

4.痛苦的过程

  /*** 斐波那契算法实现* @param arr 目标数据* @param value 目标数* @return 目标数的下标*/public static int fibonacciSearch(int[] arr, int value) {int left = 0;int right = arr.length - 1;int k = 0;//斐波那契分割数值的下标int middle = 0;//中间值int[] f = fib();//获取斐波那契数列//获取斐波那契的下标while (right > f[k] - 1) {k++;}//拷贝斐波那契数组int[] temp = Arrays.copyOf(arr, f[k]);for (int i = right + 1; i < temp.length; i++) {temp[i] = arr[right];}while (left < right) {//终止循环的条件middle = left + f[k - 1] + 1;if (value < temp[middle]) {//继续向数组的左边查找right = middle - 1;k--;} else if (value > temp[middle]) {//继续向数组的右边查找left = middle + 1;k -= 2;} else {//找到if (middle < right) {return middle;} else {return right;}}}return -1;}

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS生成登录验证码

采用js生成登录的验证码 采用的技术点有html&#xff0c;css&#xff0c;JS&#xff0c;jQuery HTML&#xff1a; <div class"box_b"><img src"./img/0775639c-c82c-4a29-937f-d2a3bae5151a.png" alt""><div class"regist…

Java面试题(每天10题)-------连载(41)

目录 Spring篇 1、什么是Spring框架&#xff1f;Spring框架主要有哪些模块&#xff1f; 2、使用Spring框架能带来哪些好处&#xff1f; 3、什么是控制反转&#xff08;IOC&#xff09;&#xff1f;什么是依赖注入&#xff1f; 4、解释下Spring中的IoC? 5、BeanFactory和…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

LiveGBS流媒体平台GB/T28181功能-概览中负载信息直播、回放、播放、录像、H265、级联查看负载会话列表

LiveGBS常见问题-概览中负载信息具体表示什么直播、回放、播放、录像、H265、级联等 1、负载信息2、负载信息说明3、会话列表查看3.1、会话列表 4、搭建GB28181视频直播平台 1、负载信息 实时展示直播、回放、播放、录像、H265、级联等使用数目 2、负载信息说明 直播&#x…

GeoServer本地部署与远程访问Web管理页面——“cpolar内网穿透”

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

Linux常用命令——atq命令

在线Linux命令查询工具 atq 列出当前用户的at任务列表 补充说明 atq命令显示系统中待执行的任务列表&#xff0c;也就是列出当前用户的at任务列表。 语法 atq(选项)选项 -V&#xff1a;显示版本号&#xff1b; -q&#xff1a;查询指定队列的任务。实例 at now 10 minu…

个人Windows电脑通过Cloudreve+Cpolar搭建PHP云盘系统公网可访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

GPC-数据鉴别(DAP)模式验证

概述&#xff1a; 9.2.1 数据鉴别(DAP)模式验证 应用提供方可以要求对其加载到卡片的应用代码进行完整性和真实性的验证。在本规范中详述的具备“DAP 验证权限”的应用提供方安全域&#xff0c;代表应用提供方提供了这种验证服务。授权管理者可以要求对所有加载到卡片的应用…

Socket和Http通信原理

Socket是对TCP/IP协议的封装&#xff0c;Socket本身并不是协议&#xff0c;而是一个调用接口&#xff08;API&#xff09;&#xff0c;通过Socket&#xff0c;我们才能使用TCP/IP协议,主要利用三元组【ip地址&#xff0c;协议&#xff0c;端口】。 Http协议即超文本传输协议&a…

实用篇 | 利用Flask+Postman为深度学习模型进行快速测试(超详细)

利用FlaskPostman为深度学习模型进行快速测试&#xff0c;以及算法中的一些实例&#xff0c;以后会更新一些新的模板~~ #本文环境&#xff1a;服务器Ubuntu20.04(docker) 目录 1.下载postrman 2.编写flas的app文件 3.在postrman发送请求 4.实例 在服务器创建app.py文件 …

基于Python手把手教你实现flappy bird游戏

目录 前言开始前的准备工作进入正题结束语 前言 想必玩过游戏的都知道&#xff0c;Flappy Bird是一款简单却富有挑战性的经典的小鸟飞行游戏&#xff0c;让许多玩家为之痴迷&#xff0c;而作为开发者&#xff0c;那肯定要通过技术手段来再做一遍这款经典游戏。那么本文就来通…

Maven生命周期

Maven生命周期 通过IDEA工具的辅助&#xff0c;能很轻易看见Maven的九种生命周期命令&#xff0c;如下&#xff1a; 双击其中任何一个&#xff0c;都会执行相应的Maven构建动作&#xff0c;为啥IDEA能实现这个功能呢&#xff1f;道理很简单&#xff0c;因为IDEA封装了Maven提供…

Pillow操控图像,Python必备神器全面解析!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Pillow 是一个强大的 Python 图像处理库&#xff0c;它提供了丰富的功能&#xff0c;能够处理图像的加载、编辑、处理和保存。这个库建立在 Python Imaging Library (PIL) 的基础上&#xff0c;并延续了 PIL 的开…

医院信息化专业人员必备医院业务运作及管理流程知识(详细)

业务流程是一家医院运作的基础,医院所有业务都需要流程加以驱动。熟知医院各项业务,了解医院管理流程,有利于医院工作人员更好地投入自身岗位,提高工作效率。本文整理了常见医院业务运作及管理流程,仅供参考! 【门诊业务】 一、门诊业务的特点: 1.接诊病人多,就诊时…

【部署】Deploying Trino on linux

文章目录 一. Requirements1. Linux operating system2. Java 环境3. Python 二. Installing Trino三. Configuring Trino1. 节点配置2. JVM 配置3. Config properties4. Log levels5. Catalog properties 四. Running Trino 一. Requirements 1. Linux operating system 64位…

Django总结

文章目录 一、Web应用Web应用程序的优点Web应用程序的缺点应用程序有两种模式C/S、B/S C/S 客户端/服务端局域网连接其他电脑的MySQL数据库1.先用其他电脑再cmd命令行ping本机ip2.开放MySQL的访问 B/S 浏览器/服务端基于socket编写一个Web应用 二、Http协议1.http协议是什么2.h…

智能优化算法应用:基于动物迁徙算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于动物迁徙算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于动物迁徙算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.动物迁徙算法4.实验参数设定5.算法结果6.参考…

用Python创建日历详细指南与实用示例

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 用Python创建日历详细指南与实用示例&#xff0c;全文4800字&#xff0c;阅读大约15分钟。 在日常生活和工作中&#xff0c;创建和管理日历是一项关键任务。Python提供了丰富…

广州招聘用什么平台

广州招聘一般都会通过“广州吉鹿力招聘网”这个平台进行。广州吉鹿力招聘网是一个拥有多年经验的招聘平台&#xff0c;用户可以通过广州吉鹿力招聘网来寻找适合自己的职位&#xff0c;对于求职者来说&#xff0c;广州吉鹿力招聘网的要求相对较高&#xff0c;广州吉鹿力招聘网是…

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 本章将介绍视觉SLAM的基本问题之一&#xff1a;如何描述刚体在三维空间中的运动&#xff1f; 旋转向…