斐波那契查找(黄金分割法查找)
什么是斐波那契查找 斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、····,在数学上,斐波那契被递归方法如下定义:F(1)=1,F(2)=1,F(n)=f(n-1)+F(n-2) (n>=2)。该数列越往后相邻的两个数的比值越趋向于黄金比例值(0.618)。 斐波那契查找就是在二分查找的基础上根据斐波那契数列进行分割的。在斐波那契数列找一个等于略大于查找表中元素个数的数F[n],将原查找表扩展为长度为 F[n] (如果要补充元素,则补充重复最后一个元素,直到满足 F[n] 个元素),完成后进行斐波那契分割,即F[n]个元素分割为前半部分F[n-1]个元素,后半部分F[n-2]个元素,找出要查找的元素在那一部分并递归,直到找到。 代码实现 package test.algorithm.FastSlowPointer; /** * 斐波那契查找(黄金分割法查找) * @author serenity * */ public class FibonacciSearch { public final static int MAXSIZE = 20; /** * 斐波那契数列 * @return */ public static int[] fibonacci(){ int[] f = new int[20]; int i =0; f[0] = 1;