2011-04-26 173 views
2

我需要一個列表型數據結構來實現一個項目。其實它並不一定是某種列表,但它必須很快,我會用它來不斷插入/刪除/檢索數據(其他數據結構)。我可能會插入一些東西,搜索,再次插入,刪除,再次搜索等等,因此動作是隨機的。高效的列表數據結構

我發現skip-lists目前爲止速度最快,有什麼比這更快的?

+3

您是如何搜索?你在索引什麼?你的問題歸結爲「我想要一個快速的數據結構」,但我們需要更多關於你的訪問模式的細節來給出一個真正的答案。 – raylu 2011-04-26 02:57:03

+0

我使用唯一字符串進行索引。對不起,忘了提到這一點。 – 2011-04-26 02:59:16

回答

0

很大程度上取決於您選擇的語言。 C使您能夠最大限度地控制最終的數據結構,並且最終將實現最快的實現之一。當然,非常容易的時間在腳下射擊自己。相當糟糕。 Python抽象了很多列表數據結構,並且我發現它一直很快,但我並沒有太強調它。

我會建議檢查一下新鮮的預製C庫,你可以重新調整你的任務。也許維基百科頁面跳過列表會指向更多的:http://en.wikipedia.org/wiki/Skip_list

數據結構是一個深刻的主題,需要一個體面的大O符號接地,當我們談論「速度」和「效率」或你將無法做出客觀的比較。最後,一切都有所折衷。選擇一個最接近你的數據的數據結構,以及你打算如何操縱它。如果你的任務相當隨意,那麼請回到設計階段,問自己如何改進發生在數據結構之前的事情。也就是說,讓你的算法敲定出來,然後選擇一個數據結構來補充它。

+0

C是我正在使用的語言。該項目通過運行時進行測試,因此執行所有這些操作的速度越快越好。這不是重要的記憶。 – 2011-04-26 03:05:28