我在有序数组操作的大O分析中发现了这个link。链接中的删除操作被分类为 linear 时间。
实际代码对每个输入执行2个操作。在一般情况下,对二进制搜索执行一项操作以找到要删除的值,然后执行第二项操作以在删除后将其余值上移。 二进制搜索引擎的对数时间和上移值是线性时间,因此我认为运行时分析的平均情况至少为O(n logn),对数线性时间不是线性时间。
我想念什么?
答案 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: