【发布时间】:2011-10-05 04:45:36
【问题描述】:
我今天刚碰到这个问题,正在尝试一个比 O(N) 更好的解决方案,但无法想出一个。
通过 SO 搜索但找不到此问题。
有没有比 O(n) 更好的解决方案,或者是一个无法解决的问题?
我最初的想法是二分搜索,但同样你需要对它进行排序,这又是 >n。我还想过只对搜索元素可能所属的数组的一半应用快速排序,但我们再次进行 n 比较,然后才丢弃另一半。我是在做对还是在寻找错误的解决方案?
我正在尝试 C++ 中的解决方案,但没有 javascript 的 IndexOf() 或 C# Array.find() 或 LINQ。
【问题讨论】:
-
如果没有排序,我认为你不能比
O(n)做得更好。 -
如何从数组的两端搜索,如果元素不存在则在中间相遇。它适用于固定大小的数组或循环链表。
-
@user6001430 两次比较
标签: algorithm visual-c++