c#中是否有一个表示c#中的堆的数据结构 如果没有,那么用于在有效时间内找到最小元素并允许重复元素的最佳数据结构是什么 提前谢谢
答案 0 :(得分:4)
通过存储已排序的项目,可以在O(1)
中检索最小元素。然后,您将从列表中取出第一个项目。这可能(如果你在最后一个索引中添加一个元素)可能会牺牲插入性能。
要在O(1)
中获取它,您必须使用线性搜索算法,但仍然存储已排序的值。在List
上List[0]
。
在C#中,您可以使用Sorted Collection完成快速检索。
但是,Sorted Collection使用二进制搜索来检索项目,结果为O(log n)
,即使最小元素位于第1位。
另一种选择是使用Sorted Set。在那里,您必须自己编写IComparer
,read about it here。允许它存储重复值。
我建议你也有一个read over here。