斐波那契查找出现的问题及解决方法

发布时间:2026/7/28 17:57:58

斐波那契查找出现的问题及解决方法
先看看斐波那契查找方法斐波那契数列 1 1 2 3 5 8 13 21 …斐波那契数列 的前一项f[k-1]/f[k] 随着k越来越大这个值逐渐趋近黄金分割点0.618如果查找的数据长度等于斐波那契数列的某一项数。则可以直接进行查找否则 就需要将查找目标数组进行扩列扩列数用目标数组高位填充假设目标数组 1,2,3,4,5,6 数据长度为6 那么就需要进行扩列到8 即 1,2,3,4,5,6,7,8由于f[k] f[k-1]f[k-2] 8 3 5 则查找就分为前5后3以此类推***import java.lang.reflect.Array; import java.util.Arrays; /** * 斐波那契查找 */ public class FibnqSearch { /** * 采用非递归的方式 * param arr * param key 查找的值 * return */ public static int serach(int[] arr,int key){ int low 0; int high arr.length - 1; int k 0; //斐波那契分割数值的下标 int mid 0; //存放mid值 int[] fibarr new int[20]; fibarr[0] 1; fibarr[1] 1; for (int i 2; i fibarr.length; i) { fibarr[i] fibarr[i-1] fibarr[i-2]; } //获取到斐波那契分割数值的下标 while (high fibarr[k] - 1){ k; } //不足的部分用0补齐 int[] temp Arrays.copyOf(arr,fibarr[k]); //将temp的高位以后的数据全部填充arr高位的数据 for (int i high1; i temp.length ; i) { temp[i] arr[high]; } //找到key值 while (low high){ mid low fibarr[k-1] - 1; //向左查找 if (key temp[mid]){ high mid - 1; k--; }else if (key temp[mid]){ //向右查找 low mid 1; k - 2; }else { if (mid high){ return mid; }else { //如果数组填充了就返回没填充之前的最高位 return high; } } } return -1; } }下面描述下出现的问题当查找的数据长度为5的时候查找最后一个数会出现斐波那契下标越界。查找目标数据 1,2,3,4,5 查找 5在计算mid low fibarr[k-1] - 1;会出现异常修改后的代码如下if (k 0){ mid low fibarr[k-1] - 1; }else { mid low; }这样一来就避免了异常问题很奇怪唯独在数据长度为5查找最后一个数据时就会出错。

相关新闻

keras 全连接手写识别  coursera week2

keras 全连接手写识别 coursera week2

2026/7/28 17:47:57

Exercise 2 In the course you learned how to do classificaiton using Fashion MNIST, a data set containing items of clothing. There’s another, similar dataset called MNIST which has items of handwriting – the digits 0 through 9. Write an MNIST classifier t…

终极指南:如何在15分钟内完成Honey Select 2游戏增强补丁的完整安装与配置

终极指南:如何在15分钟内完成Honey Select 2游戏增强补丁的完整安装与配置

2026/7/28 17:47:57

终极指南:如何在15分钟内完成Honey Select 2游戏增强补丁的完整安装与配置 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经因为Honey Sel…

电子书格式互不兼容,多款电子书转换工具客观使用记录

电子书格式互不兼容,多款电子书转换工具客观使用记录

2026/7/28 17:47:57

日常电子读物归档、跨设备阅读整理过程中,经常遇到电子书封装格式不被阅读器兼容的问题。不同电子书转换工具支持的格式种类、排版还原效果、批量处理能力、运行模式存在明显区别。下文客观记录五款电子书相关工具的基础能力与使用局限,本文无任何商业合…

NLP自然语言处理:Trasformer详解 - 论文《Attention is All You Need》总结

NLP自然语言处理:Trasformer详解 - 论文《Attention is All You Need》总结

2026/7/28 18:47:59

论文《Attention is All You Need》地址:https://arxiv.org/abs/1706.03762 英文原版Trasformer详解:https://jalammar.github.io/illustrated-transformer/ 在本文中,将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。 目录 一、宏观理解T…

健身俱乐部网站开发全栈技术解析与实践

健身俱乐部网站开发全栈技术解析与实践

2026/7/28 18:47:59

1. 健身俱乐部网站项目概述这个健身俱乐部网站项目是一个典型的服务行业数字化解决方案,主要面向中小型健身场馆的线上运营需求。作为一个完整的网站开发案例,它包含了前端展示、会员管理、课程预约等核心功能模块,配套的文档和源码为开发者提…

三步搞定Data-Juicer:如何轻松构建AI大模型的数据处理流水线

三步搞定Data-Juicer:如何轻松构建AI大模型的数据处理流水线

2026/7/28 18:47:59

三步搞定Data-Juicer:如何轻松构建AI大模型的数据处理流水线 【免费下载链接】data-juicer Data processing for and with foundation models! 🍎 🍋 🌽 ➡️ ➡️🍸 🍹 🍷 项目地址: https:/…

Excelize v2.10.1版本性能优化与图表功能详解

Excelize v2.10.1版本性能优化与图表功能详解

2026/7/28 18:47:59

1. Excelize v2.10.1版本深度解析作为Go语言生态中最受欢迎的Excel文档处理库,Excelize在v2.10.1版本中带来了多项重量级更新。这个版本不仅在性能上实现了质的飞跃,更在图表功能、API设计等细节处做了大量优化。作为一个长期使用该库处理企业级报表系统…

OpenSees钢筋混凝土柱非线性分析与建模指南

OpenSees钢筋混凝土柱非线性分析与建模指南

2026/7/28 18:47:59

1. OpenSees平台与钢筋混凝土柱分析概述OpenSees作为一款开源的有限元分析框架,在结构工程领域已经发展了二十余年。我第一次接触这个工具是在2013年做硕士课题时,当时就被它强大的非线性分析能力所震撼。对于钢筋混凝土柱这类常见结构构件,O…

FireBeetle USB KB/MS Shield:串口转USB HID的硬件自动化方案解析

FireBeetle USB KB/MS Shield:串口转USB HID的硬件自动化方案解析

2026/7/28 18:37:59

1. 项目概述:FireBeetle USB KB/MS Shield 是什么?如果你玩过Arduino或者ESP32,肯定对DFRobot的FireBeetle系列不陌生,它以低功耗和紧凑设计著称。但今天聊的不是主控板,而是一个能让你的FireBeetle瞬间变身成“键盘鼠…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/28 16:04:36

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/28 16:04:35

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

2026/7/28 0:06:55

📌 一、工具核心优势盘点 数据本地存储,安全系数高所有操作日志、文档资料均保存在本机,不会上传至云端,能够有效保护企业文件与个人隐私,规避数据泄露风险。 上手简单,零编程门槛采用全图形化可视化界面&…

计算机毕业设计之基于springboot的购物平台设计与实现

计算机毕业设计之基于springboot的购物平台设计与实现

2026/7/28 0:06:55

由于移动应用技术的持续性的快速发展,现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此,许多的人工传统行业也开始与互联网结合,不再一味的依靠人工手动,努力打造半自动数字化甚至是全自动数字化模…

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

2026/7/28 0:06:55

更多请点击: https://codechina.net 第一章:豆包AI绘图提示词失效现象全景扫描 近期大量用户反馈,豆包(Doubao)AI绘图功能对常规提示词(Prompt)响应异常:语义明确的指令被忽略、中英…