我遇到了关于动态数组的时间复杂性的article,其中阐述了很多内容。但是我有一个基于案例的问题。假设我有一个动态数组,总共有6个元素,并假设第4个元素被删除。在这种情况下,删除复杂性将是O(n-index)
,它将是O(6-4) = 2
,因为最后两个元素只需要向上移动。它是否正确 ?我的文章给出了最糟糕的案例复杂性,如果删除了最顶层的元素,那么时间复杂度将是O(n)
。我找不到任何谈论从中心移除/插入物品的事情。
答案 0 :(得分:3)
您对需要移动的项目数量的分析是正确的。但是,在big-O表示法中,那仍然是O(n)。如果您在列表中有 n 项目并从中间删除某些内容,则必须移动* 0.5 * n *项目。但是当处理big-O时,我们会丢弃任何常数乘数,因此只需 O(n)。