【问题标题】:data structure that represent heap in c# [duplicate]在c#中表示堆的数据结构[重复]
【发布时间】:2016-03-24 13:02:41
【问题描述】:

c#中是否有代表c#中的堆的数据结构 如果不是,那么用于在有效时间内找到最小元素并允许重复元素的最佳数据结构是什么 提前感谢

【问题讨论】:

    标签: c#


    【解决方案1】:

    通过存储排序的项目可以在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)中检索最小元素?还是我做错了什么?
    • 我应该澄清一下。感谢您指出这一点。
    • SortedSet 类有什么问题?只是出于好奇。它不允许重复吗?
    • 顺便说一句:stackoverflow.com/questions/102398/priority-queue-in-net 解决了这个问题,并且可能有一些允许重复的资源......
    • @ScoobyDrew18,现在更新了,当我回答时,我完全没有想到。
    猜你喜欢
    • 2012-05-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2015-10-21
    相关资源
    最近更新 更多