为什么不能将m丢入O(n ^ 2 + m)?

时间:2019-10-18 14:04:45

标签: big-o notation

由于Big O是衡量代码缩放比例的度量,因此n ^ 2的缩放比例是否应该比m快得多?我看不到特定值的相关性

1 个答案:

答案 0 :(得分:0)

有时候,复杂度和大O值取决于两个变量。例如,许多图算法使用 E V 作为边和顶点的数量。如果 m 是恒定值或从 n 派生,则通常的分析可以减少它。但是,我们可以想象(可能是人为的)案例,例如 m = n ^ 3 ,因此比 m ^ 2 项的顺序更高。

我想到的一个例子是具有 n 个元素的数组 N 和一个 m 的巨大列表 M strong>元素,以检查元素是否在第一个数组内。我们很天真地选择使用冒泡排序( O n ^ 2 ),并对 M 中的每个元素在排序数组 N 上使用二进制搜索。 / p>

我们将具有 O(n ^ 2 + m + log(n))。 将 log n 降低到较低的数量级后,我们最终得到 O(n ^ 2 + m)

我们可以通过交叉自我联接来检查交叉阵列,而不是像数组那样的自行车阵列。