繁体   English   中英

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

[英]best case and worst case time complexity for insertion in unsorted array

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

我的问题是,如果考虑到未排序的数组将项目插入到未排序的数组中,则复杂度为O(1),但是如果已满,则复杂度为O(n),因为我们需要将所有项目复制到新数组中。 因此,我们要说插入数组的最佳情况复杂度是O(1),最坏情况是O(n),还是应该说最佳和最差情况都是O(n)?

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

这样考虑:我必须多久复制一次整个数组? n次。 因此,对于n-1我将支付O(1) ,最后一次插入O(n) 对于n插入,总计~2n 每个操作的平均O(1) 也许您更容易将其视为O(2)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM