簡體   English   中英

使用O(1)搜索時間在Collection中進行多重索引

[英]Multi Indexed in Collection with O(1) searching time

假設我想制作一個具有10個屬性的Class Collection,這個集合包含大約1000萬個項目。

現在我想用O(1)時間復雜度搜索這個集合,或者通過Class的任何屬性來搜索O(1)。(不僅僅是一個屬性,即ID或Name)

如果我使用List而不是LINQ查詢它將需要O(n)時間復雜度,所以它不能被使用。

C#有字典,只能用一種密鑰類型索引。 所以它也不能使用。

作為一個解決方案,我可以使用每個屬性索引10個詞典,但是這個解決方案需要大量內存,因為它有1000萬個項目。 所以這是不可行的。

PS我只想在內存解決方案(沒有數據庫)和集合可以被類的任何單個屬性搜索(例如,MyCollection [2]或MyCollection [“John”]或MyCollection [“12/12/2013”​​]等)搜索時間必須接近O(1)。

那么我該如何實現這種數據結構呢?

你不能。 你需要在記憶或時間之間進行交易。 創建10個不同的索引(即10個內部詞典)以獲得O(1)查找時間或進行線性搜索以防止內存占用增加。

這些是你的選擇。 沒有任何神奇的子彈可以讓你在這里得到最好的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM