2012-10-29 75 views
0

我目前使用列表,字典和數據表來存儲我所有的數據,但我想知道是否有更好的數據結構或方法(在較低級別上)存儲數據以便高效地使用存儲器。什麼數據結構是最好的存儲數百萬數據,但佔用最少的內存

任何幫助將不勝感激。

+1

取決於數據。 – Amber

+0

我最擔心的是長字符串。 – Dreamer78692

+3

和...取決於數據的預期用途。對於例如一些容器使用更多的內存來允許快速訪問數據或快速插入等... – mjv

回答

1

這取決於您的數據和使用情況。如果只想存儲數據,那麼最有效的方法是使用數組作爲整數或浮點數(或任何其他普通的舊數據)和字符串池。

如果您需要索引數據,請按鍵搜索,例如,在大小方面嘗試使用最有效的數據結構之一。使用什麼鍵類型無關緊要 - 整型,浮點型或字符串,trie可以用來創建索引。整數或任何其他鍵可以表示爲二進制字符串並插入到特里結構中。有很多不同的trie數據結構,它們使用某種壓縮來更有效地存儲數據,例如 - Array Mapped Trie。您還可以在最低級別添加一些壓縮,例如使用基本128整數編碼或Golomb編碼。

+1

不在二進制堆O(N)中搜索? – Justin

+0

不,它是O(log N),這就是堆排序爲O(N log N)的原因。 – Lazin

+0

我想這對於堆排序來說是正確的,但是當你將堆中的元素傳遞到排序後的數組時,你本質上是在銷燬堆。如果你想在同一個堆中執行多個「搜索」,你不是基本上在做O(log N)來堆起所需的元素,那麼你必須將刪除的元素添加回堆中? – Justin

相關問題