Asked By : Neil Slater
Answered By : manlio
Have I stumbled across a known thing?
There are various methods, based on a mix of interpolation-search and binary search, with a $O(log log n)$ average case access time (uniform distribution) and $O(log n)$ worst case time (values unevenly distributed):
- Introspective search is your method (iterating between an interpolation search and a binary search). I haven’t further details.
- Interpolation-binary search (IBS) by N. Santoro, J. B. Sidney (1985). The general idea is that interpolation search is useful only when the array searched is larger than a given threshold. When the considered search segment is smaller than a user-defined threshold, binary search is applied unconditionally. Vice-versa, over that threshold, an interpolation search step is applied, followed eventually by a binary search step. This has many common points with your approach.
- Adaptive search (AS) by Biagio Bonasera, Emilio Ferrara, Giacomo Fiumara, Francesco Pagano, Alessandro Provetti Using the authors’ words:
[Interpolation-binary search] devised a similar solution that combines (but does not blend) together interpolation and binary search. Although the asymptotic complexity is the same, there are some marked differences. [CUT] Hence, it is possible to show that for any input AS will not take more elementary operations than IBS.
The algorithm may spend up to double number of operations than “simple” interpolation search in carefully finding out the best halving of the search segment, which in turn will mean that less iterations shall be needed to complete (but you have an even greater overhead).
Best Answer from StackOverflow
Question Source : http://cs.stackexchange.com/questions/59750