转载

BinarySearch.java

/*** @ClassName BinarySearch* @Description 折半查找**  可以使用插值公式将折半查找性能优化**  只需将其中的 mid = (low+high) / 2 = low + 1/2*(high-low)*  改为 mid = low + (high-low) * (key-a[low]) / (a[high]-a[low])** @Author zk_kiger* @Date 2019/12/17 20:26* @Version 1.0*/public class BinarySearch {// 非递归public int binarySearch(int[] array, int n, int key) {int low, high, mid;low = 0;high = n-1;while (low <= high) {mid = (low+high) / 2;if (key < mid)high = mid -1;else if (key > mid)low = mid + 1;elsereturn mid;}return 0;}// 递归public int binarySearchD(int[] array, int key, int low, int high) {if (low > high)return 0;int mid = (low+high) / 2;if (key < mid)binarySearchD(array, key, low, mid-1);else if (key > mid)binarySearchD(array, key, mid+1, high);elsereturn mid;return 0;}}

FibonacciSearch.java

/*** @ClassName FibonacciSearch* @Description 斐波那契查找*  思路:*      在斐波那契数列找一个等于略大于查找表中元素个数的数F[n],*      将原查找表扩展为长度为F[n](如果要补充元素,则补充重复最后一个元素,*      直到满足F[n]个元素),完成后进行斐波那契分割,即F[n]个元素分割为*      前半部分F[n-1]个元素,后半部分F[n-2]个元素,找出要查找的元素在那一部分并递归,直到找到。** @Author zk_kiger* @Date 2019/12/17 20:40* @Version 1.0*/public class FibonacciSearch {// 用来存储斐波那契数列private int[] fib = {1,1,2,3,5,8,13,21,34};public int fibonacciSearch(int[] array, int n, int key) {int low, high, mid, k;low = 0;high = n-1;k = 0;// 找到有序元素个数在斐波那契数列中最接近的最大数列值while (n > fib[k])++k;// 补齐有序表for (int i = n; i <= fib[k]; i++) {array[i] = array[high];}while (low <= high) {// 计算当前分割的下标mid = low + fib[k-1]-1;if (key < mid) {high = mid - 1;// 若在左半区,那么下一次查找有序元素个数为 fib[k-1]-1k -= 1;}else if (key > mid) {low = mid + 1;// 若在右半区,那么下一次查找有序元素个数为 fib[k-2]-1k -= 2;}else {if (mid <= n-1)return mid;else {// 说明查找得到的数据元素是补全值return n-1;}}}return 0;}}

算法:静态查找表(Static Search Table)(顺序查找、二分查找、插值查找、斐波纳契查找)相关推荐

  1. 顺序,二分,插值,斐波那契 查找算法

    总结: 博客详细描述:(http://www.cnblogs.com/maybe2030/p/4715035.html#_label4) 关注: 二分查找.插值查找以及斐波那契查找都可以归为一类插值查 ...

  2. 斐波那契查找(黄金分割法)超详细详解

    斐波那契查找思路 说句实在话,这个斐波那契查找我看了不下5遍才理解他的思路和代码,因为它里面的值太多,不好理解容易绕晕,所以我给大家用自己的理解讲一下 什么是斐波那契 要想学会斐波那契查找,首先你得知 ...

  3. 查找算法-(顺序查找、二分查找、插值查找、斐波那契查找)

    1)顺序查找或叫线性查找 就是顺序遍历匹配 2)二分查找 package search;public class BinarySearch {/*** 二分查找数组必须有序*//**** @param ...

  4. 【Java数据结构与算法】第九章 顺序查找、二分查找、插值查找和斐波那契查找

    第九章 顺序查找.二分查找.插值查找和斐波那契查找 文章目录 第九章 顺序查找.二分查找.插值查找和斐波那契查找 一.顺序查找 1.基本介绍 2.代码实现 二.二分查找 1.基本介绍 2.代码实现 三 ...

  5. java斐波那契查找_详解Java Fibonacci Search斐波那契搜索算法代码实现

    一, 斐波那契搜索算法简述 斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术. 斐波那契搜索采用分而治之的方法,其中我们按照斐波那契数列对元素进行不均等 ...

  6. 二十三、斐波那契查找算法

    一.基本介绍 1.黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比.取其前三位 数字的近似值是 0.618.由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为 ...

  7. Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找

    Java有序表查找:折半查找.二分查找.差值查找和斐波那契查找     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51 ...

  8. 查找算法之斐波那契查找算法

    斐波那契(黄金分割法)查找算法 (一)算法简介 (1)斐波那契数列 在讲算法之前,我们先介绍一下斐波那契数列,该数列公式为F(K) = F(k-1) + F(k-2),即 1.1.2.3.5.8.13 ...

  9. 查找算法之三:斐波那契查找(黄金分割法)

    斐波那契查找 思路分析 代码实现 思路分析 FibonacciSearch(也叫黄金分割法)的思路分析: ==>实际上,这也是一个基于二分查找(也就是折半查找)的查找算法.只是在计算mid 的值 ...

最新文章

  1. python与excel做数据可视化-我在工作中是怎么玩数据的—数据可视化系列教程—Python篇...
  2. 《MySQL DBA修炼之道》——2.3 其他MySQL分支的安装
  3. mysql编写完怎么执行_面试官:一条MySQL更新语句是如何执行的?
  4. Codeforces Round #529 (Div. 3) F. Make It Connected(最小生成树)
  5. 【Java中级篇】动态代理机制
  6. 搭建开发环境tomcat起不来
  7. Android判断网络状态
  8. 计算机视觉实战(十一)Scale Invariant Feature Transform(SIFT)(附完整代码)
  9. 图像频域增强:低通滤波器
  10. 关于semantic-ui的cdn失效问题(怎样通过本地引用semantic-ui)
  11. 卡巴斯基安全部队2014,越来越像VISTA了
  12. 主机一拖二 linux,使opensuse12.1实现一拖二(拖机)的双人使用系统(上)
  13. Redis更新数据的时候如何不重置过期时间
  14. 2021年石景山区景贤计划人才认定条件及材料,补贴100万
  15. pytorch 模型微调
  16. 漏洞解决方案-敏感信息脱敏显示
  17. UE4 全局变量的应用(蓝图)
  18. 树莓派小车————全部代码
  19. 被老婆赶出家门,男子嚎啕大哭:击垮一个成年人,一次失业就够了
  20. 电脑计算机快捷键消失,电脑桌面快捷方式不见了

热门文章

  1. 职业探秘:游戏测试员
  2. html打开ppt自动播放,怎么自动播放ppt_ppt设置自动播放方法-win7之家
  3. 产品功能树图_数据产品经理之图表设计
  4. 英特尔530和535哪个好_2020联想小新Air 14英特尔版和锐龙版怎么选,有什么区别...
  5. 大林算法计算机控制实验报告,计算机控制工程实验报告.docx
  6. vue 动态获取的图片路径不显示_解决Vue动态加载本地图片问题
  7. 一、银行存管的几种方式?
  8. 用Python写一个命令行火车票查看器
  9. 云服务器购买代码,购买 Linux 云服务器(示例代码)
  10. 效率 | 命令行备忘工具navi,快速调用复杂命令