我知道我可以使用Dictionary并在O(1)时间内检索任意元素.
我知道我可以在O(1)时间内获得SortedDictionary
中的下一个最高(或最低)元素.但是如果我想在SortedDictionary中删除第一个值(基于TKey的IComparable)呢?
我可以使用.First()
方法检索最小的密钥吗?它的复杂性是什么?它会在O(1),O(log n)还是O(n)时间内运行?
SortedDictionary是否是正确的数据结构?
注意:用例是穷人的优先级队列或有序队列.这不允许使用开源(必须是从头开始的代码,或者已经在.NET 3.5框架中).
SortedList和SortedDictionary在内部实现为二叉
搜索树,理想情况下可以为Min提供O(log n)
性能(需要遍历树,但不能枚举整个列表).但是,使用LINQ执行Min可能会枚举整个列表.
我认为Skip List是更好的替代数据结构.