[英]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.