我有很多指數。字典樣式查找數百萬個對應於一組值的鍵?
有對應於索引範圍
例如特定的一組:給定一個特定的索引
Range Group
0-100 A
101-220 B
221-543 C
... ...
3K-40K DF
我需要一種方法來查找一個相應的基團,。 例如,我需要一個方法:
(Group)groupForIndex:(index)
所以,如果我叫groupForIndex:(115)
,其結果必然是B
我正在尋找,以改善我現在有辦法。
我不會只使用一個NSDictionary
(或地圖),因爲這將是每個ID的條目,可能是數百萬,並且會浪費空間,因爲許多鍵具有相同的值。我決定使用數組和字典的組合。 對於每個「上限」,將有所述陣列中的條目
實施例:
[0] = 100
[1] = 220
[2] = 543
並且對於每個上限,就會出現在詞典
Key Value
100 A
220 B
543 C
的條目這樣,使用二進制搜索,給定索引我可以查找一個上限。一旦我有了上限,我就有了字典的鑰匙。
這是我能想出的最有效的查找方案。什麼是更有效的方式來做到這一點?
請注意,您可以用數組(A,B,C,...,DF)替換字典。在第一個數組中查找115會得到索引「1」,它映射到第二個數組中的「B」。 –
這是個好主意。我沒有想到這一點。只需兩個相同大小的陣列可能會更好。 –