【发布时间】:2016-03-24 13:02:41
【问题描述】:
c#中是否有代表c#中的堆的数据结构 如果不是,那么用于在有效时间内找到最小元素并允许重复元素的最佳数据结构是什么 提前感谢
【问题讨论】:
标签: c#
c#中是否有代表c#中的堆的数据结构 如果不是,那么用于在有效时间内找到最小元素并允许重复元素的最佳数据结构是什么 提前感谢
【问题讨论】:
标签: c#
通过存储排序的项目可以在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。
【讨论】:
SortedCollection类中实际使用自平衡二叉搜索树时,可以在O(1)中检索最小元素?还是我做错了什么?