1
$\begingroup$

(This is a cross-post from CS.SE).

Consider a sorted list of $n$ elements $x_1, \ldots, x_n$. Using binary search to find $x_k$ in this list takes $f(n, k)$ iterations, where $f : \mathbb{N}^2 \to \mathbb{N}$ is a function such that, for all $n, k \in \mathbb{N}$ such that $1 \leq k \leq n$, $$ f(n, k) = \begin{cases} 1, & k = m,\\ 1 + f(n - m, k - m), & k > m,\\ 1 + f(m - 1, k), & k < m, \end{cases} $$ where $m = \lfloor (1 + n)/2 \rfloor$.

Is there a closed-form expression for $f(n, k)$, or at least a nice non-recursive formula?

Looking at the decision tree for the binary search, it is easy to see that $f(n, k) = d + 1$ where $d$ is the depth of $x_k$ in the decision tree, but I didn't get much further. The repeated floored division by 2 made me think it has something to do with approximating $k$ with division and multiplication. My hypothesis was that $d$ was the least value such that $k = \left\lfloor \frac{na}{2^{d+1}} \right\rfloor$ for some positive integer $a < n$, but that doesn't work for $n = 10, k = 3$.

$\endgroup$
2
  • $\begingroup$ If $n=2^t-1$ for some $t\in\mathbb{N}$, and $k=2^rs$ where $s$ is odd, then $f(n,k)$ is $t-r$. I really doubt there exists any non-recursive formula for a general $n$ $\endgroup$
    – EnEm
    Commented Jun 14 at 22:57
  • 1
    $\begingroup$ Flajolet and Golin, ICALP '93 (algo.inria.fr/flajolet/Publications/FlGo93.pdf), studied questions of this form (they did it for mergesort, but I'd be shocked if their techniques didn't work for binary search, though I haven't thought about it myself). $\endgroup$ Commented Jun 15 at 2:18

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.