我正在尋找一個數據結構,它可以像普通列表一樣快地排序,並且應該允許以下列方式刪除元素。比方說,我們有一個列表如下:這樣的數據結構是否存在?
[{2,[1]},
{6,[2,1]},
{-4,[3,2,1]},
{-2,[4,3,2,1]},
{-4,[5,4,3,2,1]},
{4,[2]},
{-6,[3,2]},
{-4,[4,3,2]},
{-6,[5,4,3,2]},
{-10,[3]},
{18,[4,3]},
{-10,[5,4,3]},
{2,[4]},
{0,[5,4]},
{-2,[5]}]
即含元組一個列表(這是Erlang的語法)。每個元組包含和列表,其中包括用於計算以前編號的列表的成員。我想對列表做如下處理。首先,排序它,然後取頭的名單,最後乾淨的名單。 clean我的意思是從尾部刪除包含頭部中的元素的所有元素,或換句話說,尾部與頭部相交的所有元素不爲空。例如,排序後的頭是{18,[4,3]}
。下一步是去除含有4
或3
,列表中的所有元素,即所產生的名單應該是這樣:
[{6,[2,1]},
{4,[2]},
{2,[1]},
{-2,[5]}]
過程遵循通過採取新的頭,直到整個列表被消耗再次清洗。請注意,如果清理過程保留了訂單,則不需要每次迭代均列出清單。
瓶頸在這裏是清潔過程。我需要一些結構,使我能夠以比現在更快的速度進行清潔。
有誰知道一些允許以有效的方式做到這一點,而不會丟失順序或至少允許快速排序的結構嗎?
您需要某種支持索引結構來爲您創建非線性查找效率。即跟蹤哪些節點具有哪個整數值。 然後,您需要考慮在成本制定中維護支持指數結構的開銷。 – mba12
究竟是「高效」?什麼是「快速排序」?標準列表是不夠的嗎?您需要什麼操作以及平均複雜程度如何? – Bergi
這是不是很清楚您是否在談論外部列表,內部列表或結構作爲一個整體。 – Bergi