C# 在c中表示堆的数据结构#
c#中是否存在表示c#中堆的数据结构 如果没有,那么什么是最佳的数据结构,可以用来在最短的时间内找到最小的元素,并允许元素重复C# 在c中表示堆的数据结构#,c#,C#,c#中是否存在表示c#中堆的数据结构 如果没有,那么什么是最佳的数据结构,可以用来在最短的时间内找到最小的元素,并允许元素重复 提前感谢通过存储已排序的项目,可以在O(1)中检索最小元素。然后,您将从列表中取出第一项。不过,这可能会牺牲插入的性能(如果将元素添加到最后一个索引中,则不会) 要在O(1)中获取它,您必须使用线性搜索算法,但仍要存储排序后的值。在列表上,这将是列表[0] 在C#中,您可以通过使用 但是,排序后的集合使用二进制搜索来检索项,即使最小的元素位于位置1,也会导致O(logn
提前感谢通过存储已排序的项目,可以在
O(1)
中检索最小元素。然后,您将从列表中取出第一项。不过,这可能会牺牲插入的性能(如果将元素添加到最后一个索引中,则不会)
要在O(1)
中获取它,您必须使用线性搜索算法,但仍要存储排序后的值。在列表
上,这将是列表[0]
在C#中,您可以通过使用
但是,排序后的集合使用二进制搜索来检索项,即使最小的元素位于位置1,也会导致O(logn)
另一种选择是使用。在那里,您必须编写自己的IComparer
,您可以。允许它存储重复的值
我建议您也使用一个。当所提到的
SortedCollection
类中实际使用了自平衡二进制搜索树时,为什么可以在O(1)
中检索最小元素?还是我做错了什么?我应该澄清一下。谢谢你指出。SortedSet类有什么问题吗?只是出于好奇。它不允许复制吗?正如旁注:它克服了这个问题,也许有一些资源允许复制…@ScoobyDrew18,现在更新了,当我回答时,它完全逃过了我的脑海。