插入未排序数组的最佳情况和最坏情况时间复杂度

时间:2017-11-12 04:37:33

标签: arrays time-complexity big-o

我知道这是一个普遍的问题,但在我研究时间复杂性时,我确实需要清除疑点。在发布此处之前我确实试过查找,但发现了混合的答案。

我的问题是,当在未排序的数组中插入项目时,考虑到它不满,复杂性将是O(1)但是如果它已满,那么它将是O(n),因为我们需要将所有项目复制到新阵列。那么我们会说在数组中插入的最佳案例复杂度是O(1),最坏的情况是O(n)还是我们应该说最好和最坏情况都是O(n)?

1 个答案:

答案 0 :(得分:1)

如果你必须将整个数组复制到一个更大的数组中,那么最坏情况插入是O(n)。但你必须记住,这是我们关心的摊还成本。

以这种方式思考:我经常需要复制整个阵列吗?进入n次。 因此,对于n-1,我将支付O(1)和最终插入O(n)~2n插入总共n。每个操作的平均O(1)。 也许您更容易将其视为O(2)

现在要保持这一点,每次填充数组时,必须分配两倍的大小,因此对于您插入的每个项目,您需要额外支付1,因为您可能需要在数组的前半部分复制相应的项目