时间复杂度 - 在动态数组中间插入一个项目

Time Complexity - Inserting an item in the middle of dynamic Array

我遇到了这个 article 关于动态数组的时间复杂度,它澄清了很多。但是我有一个基于案例的问题。假设我有一个总共有 6 个元素的动态数组,并假设删除了第 4 个元素。在这种情况下,删除复杂度将是 O(n-index),而后者将是 O(6-4) = 2,因为最后两个元素只需要向上移动。这个对吗 ?我有一些文章给出了最坏情况的复杂度,说如果删除最顶层的元素,那么时间复杂度将为 O(n)。我找不到任何关于 removing/inserting 项目 from/in 中心的内容。

您对需要移动的项目数量的分析是正确的。然而,在大 O 表示法中,这仍然是 O(n)。如果您在列表中有 n 项并从中间删除一些内容,您将不得不移动 *0.5 * n* 项。但是在处理 big-O 时,我们会删除任何常量乘数,所以这只是 O(n).