向量擴容策略有兩種,分別是遞增測量和翻倍測量,下面結合書本分析一下。
向量遞增擴容:當向量size達到capacity的時候給capacity增加乙個常量
考慮最壞的情況:每一次擴容 i ,第一次申請需要進行 i 次複製,第二次申請需要進行 2i 次複製,,,,最後一次需要進行 m*i 次複製操作。那麼總共的時間複雜度就是 i + 2i + 3i + ... + mi ≈ o((mi)^2) = o(n^2),平攤到每一次操作就是o(n).
向量翻倍擴容:當向量size達到capacity的時候容量翻倍
考慮最壞的情況,每次插入都要進行擴容操作,觀察需要複製向量的次數分別是1,2,4,,,2^m=n,利用求和公式可以計算複雜度為o(n),平均每次下來就是o(1).
很明顯,從裝填因子看,倍增策略採用空間換取時間,並且它裝填因子最低發生在剛好倍增的時候為50%
CF 976F 遞增容量最大流
給你乙個二分圖 要求你求出對於k 0 mindegree 每個點的度數至少為k所需要的最少邊數 並輸出方案 如果是單個詢問的話 直接跑乙個下界網路流即可 但是有多個詢問 重建圖強行跑不行 反過來考慮,變成至多能刪除多少邊則建邊 s,i,degree i mindegree i,t,degree i ...
C 效能簡析 集合容量的指定
長度動態增加的集合類,例如 arraylist queue等,無需在初始化時指定其容量,集合本身能夠根據需求自動增加集合大小,為程式設計帶來方便。然而,過分依賴這種特性對程式的效能提高並非好的選擇,因為集合動態增加的過程是乙個記憶體重新分配和集合元素複製的過程,會對效能造成一定的影響,所以有必要在集...
FAT磁碟分配策略簡說
fat屬於鏈結分配下的顯示鏈結分配。即 將盤塊號抽出來形成乙個表 file allocation table 這個表建立時是在磁碟的,使用時可以調入記憶體,這是必然的,不然認為fat在記憶體中,而記憶體是斷電就丟失資訊的儲存,fat表需要待在永久儲存的地方 磁碟。查詢記錄在記憶體中進行,顯著提高了檢...