查找--斐波那契查找
1、什么是斐波那契数列? 1、1、2、3、5、8、13、21、…… 斐波那契数列又被成为黄金分割数列,因为 前一项/后一项越来越趋近于0.618 由上面的数列,可以发现 除了前两项,后面每一项都是前两项的和,如3+5=8、8+13=21..... 由此可以得到一下等式 F(n)=F(n-1)+F(n-2) (除了前两项) 2、斐波那契查找和斐波那契数列有什么联系? 斐波那契查找原理与前两种相似,仅仅改变了中间结点(mid)的位置,mid不再是中间或插值得到,而是位于黄金分割点附近,即 mid=low+F(k-1)-1 (F代表斐波那契数列) 关于F(k)-1 由斐波那契数列可知,F(k)=F(k-1)+F(k-2),那F(k)-1=(F(k-1)-1)+(F(k-2)-1)+1,所以数组长度只要满足 F(k)-1,就可以将数组分为F(k-1)-1和F(k-2)-1左右两部分,其中mid=low+F(k-1)-1 3、代码实现 目标;查找99 int[] a={0,16,24,35,47,59,62,73,88,99}; public static int MaxSize=20; //先为斐波那契数列设置长度 //构建你波拉契数列 public static int[] fib(){ int[] f=new int[MaxSize]; f[0]=1; f[1]=1; for