1.0 KiB
1.0 KiB
关于二分查找和斐波拉契查找的查找长度问题
- 对于三个版本的二分查找,以及斐波拉契查找,设向量的规模为
n,成功查找的总查找长度为S,失败查找的总查找长度为F,则总是有
S + n = F
该结论可以对n进行归纳证明,具体可见习题集[2-18]。
-
对于斐波拉契查找,设向量规模
n = fib(k) - 1,则一次查找的最多比较次数(即查找长度)为k - 1,且出现在不断向左侧移动的情况中。这是因为向量的规模至多只能减小至fib(3) - 1 = 1,再往下就结束查找了。 -
对于二分查找的版本1(不平衡版本),以及斐波拉契查找,总之就是三分支结构的查找,都有
最坏情况下成功查找的比较次数等于失败查找的比较次数,这是因为若成功查找的叶节点的比较次数为d,则该叶节点的两个外部节点分别对应了两次失败查找,它们的比较次数分别为d - 1和d。