我有連續整數值的一組和非連續的值的對應集合,例如:映射從一組到另一
0 -> 22
1 -> 712
2 -> 53
3 -> 12323
...
等。
項目數量非常大(大約10^9 ... 10^10),所以只使用普通數組不是一個選項。
是否有數據結構能夠從第一個值到另一個具有適度內存要求的快速映射?例如:
ret = map(0); // returns 22
ret = map(3); // returns 12323
編輯:採用僞隨機數發生器產生真正在這個設定值,所以無法提出了一些具體的分佈。問題是 - 是否有可能降低內存要求(可能是查找速度的價格)?我的意思是使用諸如「完美哈希」之類的東西 - 生成這種「完美哈希」所需的時間並不重要。
在您的例子的關係爲1; 1,是現實的或只有本實施例的特徵/ – 2012-08-17 12:34:03
@High性能標誌是,每個索引相關聯的具有隻有一個值,因此,使用陣列不僅是可能的因爲內存要求。 – 2012-08-17 12:36:43
您聲明瞭適度的內存要求,但10^10 int - > int會在沒有壓縮的情況下運行100個GB。你能告訴我們關於數據集的其他信息嗎? – cmh 2012-08-17 12:37:00