我想創建一個帶有順序序列(整數屬性)的雙向鏈表,這樣按順序順序進行排序可以創建一個實際上等價於鏈接列表的數組。對鏈表進行簡單排序
given: a <-> b <-> c
a.index > b.index
b.index > c.index
該索引將需要有效地處理任意數量的插入。
有沒有一種已知的算法來完成這個? 問題是當列表變大並且索引序列已經打包時。在這種情況下,必須對列表進行掃描以恢復鬆弛。 我只是不確定應如何完成此操作。理想情況下,會有某種自動平衡,因此這種借貸既快又少。
將所有左側或右側indecies更改爲1以騰出空間插入的天真解決方案是O(n)。
我更喜歡使用整數,因爲我知道數字在浮點上往往不太可靠,因爲在大多數實現中它們接近零。
爲什麼哦爲什麼dlinked列表?爲什麼不[平衡樹](https://en.wikipedia.org/wiki/https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree#Implementations)? O(log(N))操作在增長/減少時沒有問題。 –
「將所有左側或右側indecies改爲1以騰出空間插入的天真解決方案是O(n)。」如果你真的堅持一個「分頁*分頁解決方案」(無論出於何種原因),而不是分散所有頁面的鬆散,你可以簡單地分割你想插入的頁面,但是頁面達到了它的填充因子。 –
如何將新項目插入到雙向鏈表中?它們是插在頭部還是尾部?或者在中間的任意位置?請注意,將項插入到雙向鏈表的中間需要O(n),除非您維護指向單個項的指針,在這種情況下,維護這些額外的指針將需要時間。 – wookie919