我对如何针对以下问题进行大O分析感到困惑 -
从整数数组中查找元素。 (一个示例问题)
我的解决方案
现在这个大O是n ^ 2还是n ^ 2 + logn?我们应该只考虑更高的术语吗?
答案 0 :(得分:3)
问题的Big-O是针对问题存在的最佳算法的。由两个步骤(如你的)组成的算法确实是两者中最高的,因为例如。
O(n^2) == O(n^2 + log n)
但是,您不能说O(n^2)
对于您的示例问题是正确的O
,而不能证明不存在更好的算法(当然不是这种情况)在示例中; - )。
答案 1 :(得分:1)
只有更高阶的术语。复杂性始终是最高期限的复杂性。
答案 2 :(得分:0)
你这样做的方式是O(n ^ 2),因为对于大n,n ^ 2>>> LOGN
答案 3 :(得分:0)
为了进行分析,更实际地(如果您愿意,粗略地)比Alex更好,添加的 log n 对结果没有明显的影响。考虑在具有一百万个输入的实际系统中进行分析,每个输入需要一毫秒进行排序,一毫秒进行搜索(这是一个高度假设的例子)。给定O(n ^ 2),排序需要三十多年。搜索需要额外的0.014秒。你关心改进哪个部分? :)
现在,您将看到以 O(n ^ 2 x logn)为时钟的算法。将 n ^ 2 乘以 log n 的效果使 log n 显着 - 在我们的示例中,它看到了我们的三十年并且提升了我们四个世纪