HEIP了解斐波那契搜索



在Internet上,我只找到算法的代码,但是我需要先以文本形式理解,因为我只有从代码中理解内容。算法的其他描述对我来说非常复杂(在Wikipedia和其他站点上)。

这是我远的理解:

说我们需要在数组中搜索元素10

Index i  0  1   2   3    4
         2  3   4  10   40 

一些fibonacci编号在这里:

Index j  0  1   2   3    4    5    6    7    8    9
         0  1   1   2    3    5    8    13   21   34

我们要做的第一件事是找到与数组长度更大相等的斐波那契号。数组长度为4,因此我们需要服用fibonacci编号5,该数字在索引位置j=5

但是我们现在在哪里分割数组,以及如何继续?我真的不明白。请帮助理解考试...

该算法以以下方式进行:阵列的长度为5,因此大于或等于5的斐波那契数为5。,3,5)。

so,将arr [n-2]即ARR [2]与要搜索的数字进行比较,为10。

如果元素小于数字,则序列向左移动1次。此外,先前的索引将保存用于下一个迭代,以偏移索引。在这种情况下,由于4较小,n-2变为1(1、2、3)。arr [1 2(prev)] = arr [3] =10。因此,数字的索引为3。

如果元素更大,则序列向左移2次。

总是将最小(n-2 偏移,n)元素与数字进行比较以获得匹配结果。

最新更新