【发布时间】:2013-04-10 18:35:34
【问题描述】:
我正在尝试做一些非常简单的事情,但似乎我不明白SortedDictionary。
我正在尝试执行以下操作:
创建一个排序字典,按某个浮点数对我的项目进行排序,所以我创建了一个看起来像这样的字典
SortedDictionary<float, Node<T>> allNodes = new SortedDictionary<float, Node<T>>();
现在,在我添加项目之后,我想将它们一个一个地删除(每次删除的复杂度都应该是从最小到最大的 O(log(n))。
我该怎么做?我以为只是 allNodes[0] 会给我最小的,但事实并非如此。
此外,字典似乎无法处理重复的键。我觉得我使用了错误的数据结构...
如果我有一堆想要按距离(浮点)排序的节点,我应该使用其他东西吗?
【问题讨论】:
-
字典键值必须是唯一的。我认为您想使用 List
> 代替,因为 Lists 可以有重复的条目。然后使用 LINQ 将数据按照您希望的顺序进行操作。 -
您只是想根据每个节点的某些值对节点集合进行排序,还是出于某些特殊原因需要使用
SortedDictionary?如果是前者,只需在您开始时的集合上使用 LINQOrderBy。 -
我想在 O(Log(n)) 中插入和删除,我的大部分工作是插入和删除......哪个列表在 O(N) 中完成。对于您的问题:排序基于每个节点中的某些值。
标签: c# dictionary sorted sorteddictionary