斐波那契(黄金分割法)查找算法(java)
斐波那契(黄金分割法)查找算法 (java)
一、介绍
1、斐波那契数列
形如1、1、2、3、5、8、13、21、34……的数列,并且从第三项开始,每项的值为前两项之和。并且随着数列的增大,数列前一个数字除以后一个数字的结果越接近黄金分割比。
二、算法思路
1.获取长度恰好为斐波那契数列中的数字的有序数组(长度不够即扩容),由斐波那契数列的性质可知:F(k) = F(k-1) + F(k-2)。我们将数组的总长度记为F(k),所以我们可以将数组分割为两部分:前部分的长度为F(k-1),后部分的长度为F(k-2)。前部分长度比后部分长度近似黄金分割比。
2.在两部分的交界处寻找到一个中间点,将需要查找的值与中间点比较,若小于中间点,说明目标值在前半部分,由于前半部分的长度也为斐波那契数列中的数值,所以可以直接重复第一步操作,分割数组,比较查值。若目标值大于中间点,同理。
三、代码实现
1 | public int fiboReserch(int arr[], int value) { //arr为目标有序数组, value为需要查找的值 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DreamFire!