簡體   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