搜索算法复杂度:您可以取一个数的 3/4 直到它小于或等于 1 的次数

Search Algo Complexity: Number of times you can take 3/4th of a number until it is less than or equal to 1

我正在研究二分搜索的一种变体,它可以在每次迭代时将搜索 space 缩小到原始大小的 3/4,我想知道您将如何计算它的运行时间。

我的直觉告诉我它是 N 的对数底数 (4/3)(其中 N = 您正在搜索的数组的大小),但我正在努力证明这一点。

是的,你是对的。

证明如下:

让我们从相反的方向来看。我们得到一个值 0 < n ≤ 1。在最后一次迭代之前,n 必须是这样的:

1 < n ≤ 4/3,

在 one-but-last 迭代之前:

4/3 < n ≤ (4/3)²

等等...所以回溯 k 次迭代我们得到:

(4/3)k−1 < n ≤ (4/3 )k

如果我们对这个不等式中的所有部分取以 (4/3) 为底的对数:

k − 1 < log4/3n k

因此,如果将该对数 向上舍入 ,您将得到 k,它表示迭代次数。