假設一個數組最初是空的,其大小爲5,並且每次填滿所有插槽時數組擴大5。具有線性級數的動態數組的分期複雜性?
我明白,如果我們只考慮ň追加的任何序列()操作,攤銷成本是O(N),因爲總成本將是:
5+(5+1*5)+(5+2*5)+...+(5+(floor(n/5)-1)*5) = O(n^2).
*其中地板( n/5)是陣列擴展的數量。
但是,如果它是n個操作的任何序列都包含pop()?假設pop()不會更改數組大小。
我的方式顯然不會工作,我已閱讀CLRS,但我仍然相當困難。任何幫助,將不勝感激。
您似乎只在數組的末尾插入(因爲在公式中移動項目時沒有關聯的成本),所以僅在數組末尾使用刪除操作(「pop」)或者您是否想要在數組的任意點處進行刪除(在這種情況下,您需要移動物體)? – 2014-10-27 08:01:44
指定的數量太少是一個合理的問題,需要回答:擴展N長度數組的成本是多少?你想在哪裏刪除?刪除時,「高」元素是否滑落,或者是否可以用最後一個元素插入孔?或者你可以讓元素「空」嗎?你需要維護的成本和語義不清楚。 – Kaganar 2014-10-27 15:08:43
@AnttiHuima對不起,他們應該像追加和流行。 – Pig 2014-10-27 16:03:10