Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中表示堆的数据结构#_C# - Fatal编程技术网

C# 在c中表示堆的数据结构#

C# 在c中表示堆的数据结构#,c#,C#,c#中是否存在表示c#中堆的数据结构 如果没有,那么什么是最佳的数据结构,可以用来在最短的时间内找到最小的元素,并允许元素重复 提前感谢通过存储已排序的项目,可以在O(1)中检索最小元素。然后,您将从列表中取出第一项。不过,这可能会牺牲插入的性能(如果将元素添加到最后一个索引中,则不会) 要在O(1)中获取它,您必须使用线性搜索算法,但仍要存储排序后的值。在列表上,这将是列表[0] 在C#中,您可以通过使用 但是,排序后的集合使用二进制搜索来检索项,即使最小的元素位于位置1,也会导致O(logn

c#中是否存在表示c#中堆的数据结构 如果没有,那么什么是最佳的数据结构,可以用来在最短的时间内找到最小的元素,并允许元素重复
提前感谢

通过存储已排序的项目,可以在
O(1)
中检索最小元素。然后,您将从列表中取出第一项。不过,这可能会牺牲插入的性能(如果将元素添加到最后一个索引中,则不会)

要在
O(1)
中获取它,您必须使用线性搜索算法,但仍要存储排序后的值。在
列表
上,这将是
列表[0]

在C#中,您可以通过使用

但是,排序后的集合使用二进制搜索来检索项,即使最小的元素位于位置1,也会导致
O(logn)

另一种选择是使用。在那里,您必须编写自己的
IComparer
,您可以。允许它存储重复的值


我建议您也使用一个。

当所提到的
SortedCollection
类中实际使用了自平衡二进制搜索树时,为什么可以在
O(1)
中检索最小元素?还是我做错了什么?我应该澄清一下。谢谢你指出。SortedSet类有什么问题吗?只是出于好奇。它不允许复制吗?正如旁注:它克服了这个问题,也许有一些资源允许复制…@ScoobyDrew18,现在更新了,当我回答时,它完全逃过了我的脑海。