是否有任何算法搜索排序数组中的元素,其复杂度小于log2(n)

时间:2009-02-13 06:25:51

标签: algorithm search time-complexity

我编写了一个搜索算法,用于排序数组,复杂度为log2(n)/ 5.这有用吗?

5 个答案:

答案 0 :(得分:12)

可以证明,对于仅采用比较操作的搜索,您不能低于O(log(n))。 log2(n)/ 5的复杂度与O(log(n))相同 实用性取决于你使用它的目的。

答案 1 :(得分:4)

嗯。棘手的问题。你为什么不发布你的算法,让我们看看你做了什么。

然而,对于真正的胜利,你应该比O(log2 log2(n))更好?这就是插值搜索的平均值..

http://en.wikipedia.org/wiki/Interpolation_search

答案 2 :(得分:2)

除了没有任何关于数组的其他假设,除了它的排序,或没有任何预计算/数据结构创建之外,不可能比log 2更好。

如果您要查找的元素不在您的阵列中,您如何建议以少于log 2的步骤终止?

答案 3 :(得分:1)

当然,您总是可以争论非线性搜索是否必然比线性搜索更快:http://www.ddj.com/184405848

即,如果您正在搜索缓存行,则线性搜索比分支更快。

答案 4 :(得分:1)

我认为如果它比其他现有的O(logn)搜索算法在实践中更快会更有用。换句话说,如果您的基准测试显示速度提升。但是,对于非常大的输入,恒定时间的改进(如1/5)并没有太大差别。这就是为什么最重要的是算法的渐近复杂度