有序数组删除操作-大O分析

时间:2019-01-24 10:23:03

标签: java arrays algorithm

我在有序数组操作的大O分析中发现了这个link。链接中的删除操作被分类为 linear 时间。

实际代码对每个输入执行2个操作。在一般情况下,对二进制搜索执行一项操作以找到要删除的值,然后执行第二项操作以在删除后将其余值上移。 二进制搜索引擎的对数时间和上移值是线性时间,因此我认为运行时分析的平均情况至少为O(n logn),对数线性时间不是线性时间。

我想念什么?

3 个答案:

答案 0 :(得分:2)

搜索操作和删除操作是单独的操作,每个操作执行一次。

因此,您应该添加它们的运行时间,而不是相乘。

因此,您得到:

O(logN) + O(N) = O(N)

答案 1 :(得分:0)

它将是O(n + log(n)),即O(n)

答案 2 :(得分:0)

这个想法是,当您计算2个运算的复杂度时,请不要将它们相乘。 搜索需要O(log n) 并移动所有元素-O(n) 这是O(log(n) + n)而且,当n> log(n)时,我们说复杂度是O(n)。

您可能会找到更多信息here