我编写了一个搜索算法,用于排序数组,复杂度为log2(n)/ 5.这有用吗?
答案 0 :(得分:12)
可以证明,对于仅采用比较操作的搜索,您不能低于O(log(n))。 log2(n)/ 5的复杂度与O(log(n))相同 实用性取决于你使用它的目的。
答案 1 :(得分:4)
嗯。棘手的问题。你为什么不发布你的算法,让我们看看你做了什么。
然而,对于真正的胜利,你应该比O(log2 log2(n))更好?这就是插值搜索的平均值..
答案 2 :(得分:2)
除了没有任何关于数组的其他假设,除了它的排序,或没有任何预计算/数据结构创建之外,不可能比log 2更好。
如果您要查找的元素不在您的阵列中,您如何建议以少于log 2的步骤终止?
答案 3 :(得分:1)
当然,您总是可以争论非线性搜索是否必然比线性搜索更快:http://www.ddj.com/184405848
即,如果您正在搜索缓存行,则线性搜索比分支更快。
答案 4 :(得分:1)
我认为如果它比其他现有的O(logn)搜索算法在实践中更快会更有用。换句话说,如果您的基准测试显示速度提升。但是,对于非常大的输入,恒定时间的改进(如1/5)并没有太大差别。这就是为什么最重要的是算法的渐近复杂度。