斐波那契查找出现的问题及解决方法
先看看斐波那契查找方法斐波那契数列 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查找最后一个数据时就会出错。

相关新闻

关于内部类的使用

关于内部类的使用

内部类的概述: 把类定义在其他类的内部,这个类就叫做内部类 例如:在类A中定义类B,那么类B就叫做内部类 内部类的访问特点: 内部类可以直接访问外部类的成员,包括私有 外部类要访问内部类的成员,…

2026/7/28 17:57:03 阅读更多 →
java基础知识清单(一)

java基础知识清单(一)

JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环…

2026/7/28 17:57:03 阅读更多 →
终极Twitch掉落挖矿指南:告别手动观看,智能自动化获取游戏奖励

终极Twitch掉落挖矿指南:告别手动观看,智能自动化获取游戏奖励

终极Twitch掉落挖矿指南:告别手动观看,智能自动化获取游戏奖励 【免费下载链接】TwitchDropsMiner An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching. 项目地址: https://gitcode.com/Git…

2026/7/28 17:57:03 阅读更多 →

最新新闻

从日本书法到中文排版:霞鹜文楷如何成为免费字体中的“黑马“?

从日本书法到中文排版:霞鹜文楷如何成为免费字体中的“黑马“?

从日本书法到中文排版:霞鹜文楷如何成为免费字体中的"黑马"? 【免费下载链接】LxgwWenKai An unprofessional open-source Chinese font derived from Fontworks Klee One. 一款非专业的开源中文字体,基于 FONTWORKS 出品字体 Klee…

2026/7/28 18:07:06 阅读更多 →
VisualCppRedist AIO:告别Windows软件依赖烦恼的终极方案

VisualCppRedist AIO:告别Windows软件依赖烦恼的终极方案

VisualCppRedist AIO:告别Windows软件依赖烦恼的终极方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的尴尬时刻&#xff1…

2026/7/28 18:07:06 阅读更多 →
优越数

优越数

Problem Description 给定3个数,如果有两个数大于他们的平均数则称这组数为优越数。(定义纯属虚构) Input 输入第一行是一个整数: 表示测试数据的组数。 对于每组测试数据,仅一行3个整数。 Output 对于每组输入数据输出一行&#…

2026/7/28 18:07:05 阅读更多 →
访问控制符

访问控制符

1. 公共访问控制符 public :如果一个类被声明为公共类,表明它可以被所有的其它类所访问和引用。用 public 修饰的类的域称为公共域。如果公共域属于一个公共类,则它可以被所有的其他类所引用。2. 私有访问控制符 priva…

2026/7/28 18:07:05 阅读更多 →
游戏后端分布式学习——消息队列在游戏的用法

游戏后端分布式学习——消息队列在游戏的用法

作用 消息队列(Message Queue,MQ)在 MMO 中主要用于异步解耦、削峰填谷、跨服通信、事件驱动。使用场景 跨服通信场景:玩家 A 在 1 服给 2 服的玩家 B 发送邮件、赠送礼物、跨服组队邀请。为什么需要 MQ:跨服不能直接 …

2026/7/28 18:07:05 阅读更多 →
java学习(87):Interage包装类进制转换

java学习(87):Interage包装类进制转换

public class test22 {public static void main(String[] args){int num=5;Integer obj1=new Integer(num);System.out.println("obj1的值为"+obj1);Integer obj2=100;System.out.println("obj2的值为"+obj2);Integer obj3=new Integer("-789");…

2026/7/28 18:06:05 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻