【发布时间】:2011-11-27 19:22:31
【问题描述】:
请给我解释一下斐波那契搜索算法。
我已经尝试了很多资源并搜索了很多,但算法仍然不清楚。大多数资源都在与二进制搜索的链接中描述了它,但我不理解它们。我知道斐波那契搜索算法是对二分搜索的扩展,我很清楚。
我的书也没能解释清楚。
我知道定义为 F(n) = F(n-1) + F(n-2) 的斐波那契数,所以无需解释。
通过添加@AnthonyLabarre 所说的我完全不理解的内容来更新问题:
我使用的这本书有奇怪的符号,没有任何解释。在此处发布算法,请帮助。
if(key == a[mid]) return mid; // understood this, comes from binary search
if(key > a[mid]) {
if(p == 1) return -1; // What is p? It comes as a function arg
mid = mid + q; //Now what's this q? Again comes a function arg
p = p - q; // Commented as p=fib(k-4)
q = q-p; // q = fib(k-5)
} else // key < a[mid] {
if(q == 0) return -1;
mid = mid - q;
temp = p - q;
p = q; // p=fib(k-3)
q = temp; // q = fib(k-4)
return fibsearch(a, key, mid, p, q);
}
【问题讨论】:
-
嗯,到目前为止你检查了什么,也许是this?
-
你没有得到它只是证明它对你来说太复杂了,而不是书籍失败了。学会承担责任!
-
@home 我检查了那个和这个 - ics.forth.gr/~lourakis/fibsrch 和其他几个,包括动画。还不清楚。 ^_^
-
@Blindy 我很乐意这样做,但不幸的是,我必须在我的实际文件中这样做。
-
你能准确指出你不明白的地方吗?我很难猜到,尤其是如果你了解二分搜索的话。
标签: c algorithm search fibonacci