首页 > 编程语言 >有关斐波那契查找-Java实现

有关斐波那契查找-Java实现

时间:2023-03-31 19:14:53浏览次数:33  
标签:fib Java temp int 斐波 length num 数组 那契

其实对于斐波那契查找,是一种新的查找思想,对与其实用性我持怀疑态度;主要就是,黄金风分割得思想;

而斐波那契数列正好符合这一特性;其中的思想不过多赘述;主要事可以培养算法的思想;

 1 /***
 2      * fib查找
 3      * @param num 目标排查找数组
 4      * @param numSearch 目标数
 5      * @return 索引
 6      */
 7     public static int fibSearch(int[] num,int numSearch ){
 8         //初始化fin分割数组
 9         int[] fib=new int[20];
10         fib[0]=1;
11         fib[1]=1;
12         for (int i = 2; i < fib.length; i++) {
13             fib[i]=fib[i-1]+fib[i-2];
14         }
15         //获得就近的fib长度
16         int k=0;
17         while (num.length>fib[k]) {
18             k++;
19         }
20         //创建暂存的fib数组
21         int[] temp=Arrays.copyOf(num,fib[k]);
22         //用数组得最后一位数进行填充数组
23         for (int i = num.length; i < temp.length ; i++) {
24             temp[i]=temp[num.length-1];
25         }
26         //数组左端和右端的索引
27         int low=0;
28         int high= temp.length-1;
29         //黄金分割点
30         while (low<=high){
31             int mid=fib[k-1]-1+low;
32             if (numSearch==num[mid])
33                 return mid;
34             else if (numSearch>num[mid]){
35                 low=mid+1;
36                 k-=2;
37             }
38             else {
39                 high = mid - 1;
40                 k--;
41             }
42         }
43         return -1;
44     }

 

标签:fib,Java,temp,int,斐波,length,num,数组,那契
From: https://www.cnblogs.com/Mexcellent/p/17277232.html

相关文章

  • java查询hbase
    Mark——java查询hbase,https://blog.csdn.net/weixin_46408961/article/details/124224169查询Hbase数据分为Get方式查询,Scan方式查询,Scan配合Filter过滤查询01.Get方式查询importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.Cell;importorg.ap......
  • 结合 操作系统、Java多线程 学习并发编程
    为什么我们需要考虑并发?不考虑的话会出现什么问题?并发的多个程序(进程/线程)会对计算机资源进行争夺,如果不加以控制会出现混乱、严重影响程序运行效率,甚至错误首先是对CPU时间片的争夺对于多线程编程而言,由于创建线程后,线程的执行顺序是由调度程序控制的,也就是说各个线程的执行顺......
  • java integer == integer返回 true 还是 false?
    理论:IntegerCache缓存JAVA的Integer有IntegerCache会缓存-128~127之间的对象。如:Integerx=100,会调用Integer的valueOf()方法,这个方法就是返回一个Integer对象,但是在返回前,作了一个判断,判断要赋给对象的值是否在[-128,127]区间中,且IntegerCache(是Integer类的内部类,里面有一......
  • 【Java】删除String数组中的所有空值
    1、封装一个方法/****去除String数组中的空值*/privateString[]deleteArrayNull(Stringstring[]){StringstrArr[]=string;//step1:定义一个list列表,并循环赋值ArrayList<String>strList=newArrayList<String>();......
  • JavaFx 行间距 margin
    自己边尝试边摸索,间距都调不了,气的呀。如有不足,请指正!spacing相当于margin-topmargin-bottomenvBox.setSpacing(20);insets能设置上下左右间距btn1.setOpaqueInsets(newInsets(0,10,0,0));vgap="10"上下间距hgap="10"左右间距 ......
  • 系统化学习前端之JavaScript(ES6)
    前言ES6同样是ECMAScript的拓展,发布于2015年,目前多数浏览器对于部分ES6更新内容不支持,通常需要借助bable编译器编译成ES5或者ECMAScript早期版本语法去执行。ES6的学习推荐阮一峰老师的ES6教程。ES6ES6是ECMAScript最近一次较大版本的更新,更新内容主要是一......
  • 重学Java设计模式-结构型模式-享元模式
    重学Java设计模式-结构型模式-享元模式内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-14-重学Java设计模式《实战享元模式》.html#重学-java-设计模式-实战享元模式「基于redis秒杀-提供活动与库存信息查询场景」享元模式介绍图片来自:https://refactorin......
  • 一文搞懂Java异常处理
    一、什么是异常处理在Java编程中,异常处理是一种机制,用于处理程序运行时可能出现的异常情况。当程序出现异常时,程序会抛出一个异常对象,如果不加以处理,程序就会终止运行。因此,我们需要使用异常处理机制来捕获并处理这些异常,以使程序能够在出现异常时继续运行。在Java中,异常处理主要......
  • Java计算百分比
    代码如下publicstaticvoidmain(String[]args){floatnum=3.14f;inttotal=10;//创建一个数值格式化对象java.text.NumberFormatnumberformat=java.text.NumberFormat.getInstance();//设置精确到小数点后2位......
  • 错题一:java中的值传递与引用传递
    考察的知识点:在java中,原始数据类型的传递都是值传递,传递的是值的副本,形参改变对实参没有影响;引用传递传递的是引用类型数据(传递的是内存地址),如String、Map、类对象等,因此形参发生变化实参也会随之变化。原始题目:classValue{publicinti=15;}publicclassTest{pu......