繁体   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