根據Ron Wein的說法,您可以在O(log(n))時間內對紅黑樹進行拆分和連接。看到他的artikle:Efficient Implementation of Red-Black Trees with Split and Catenate Operations紅黑樹:在log(n)時間中拆分/連接時間
但是,我仍然不相信拆分的運行時間是真的。
這個想法是分裂使用最壞情況下的log(n)級聯。這些concat的執行速度很快,因爲我們可以通過從最後的連接中記住p來找到節點p。
問題是,串聯啓動修復(平衡)算法,據我所知,它採用O(log n)(請參見連接的僞代碼中的步驟5)。 這給了我一個log(n)* log(n)的運行時間,因爲拆分會導致最壞情況的log(n)級聯。
Ron Wein,在他的論證中沒有將修復算法計算在內。我在分析中錯過了什麼,或算法錯誤?
可能是暗示的修正不是每個人真的是昂貴 – 2015-03-13 10:49:25
沒想好分期付款的說法,不過是這樣的話,最終的結果將至少處於攤銷時間,而事實並非如此。所以不這麼認爲。但是,謝謝你的回答 – 2015-03-13 10:56:10
這不是我的意思。如果您可以在拆分操作(例如,通過分期付款)內限制fixup *的總工作量,則會得到適當的最差情況下的拆分限制。 – 2015-03-13 10:57:42