C#中寻找最大值的最佳数据结构?

C#中寻找最大值的最佳数据结构?,c#,data-structures,find,element,max,C#,Data Structures,Find,Element,Max,我需要知道寻找最大值的最佳数据结构是什么,它是用C#实现的吗?现在我使用SortedDictioniry,但它对键进行排序,基本上我不需要对键进行排序,但我需要的是一种更快的方法来找到最大值。同样,在我找到最大值之后,我需要对应于该值的键或索引。另外,如果可以快速插入和删除元素,希望不超过O(logn)。有这样的结构吗?我如何使用它? 谢谢大家! 这听起来就像一个例子,有大量关于如何从头开始实现的在线信息(它不是C#标准数据结构的一部分) 例如,看一看这个,并给出详细的解释。这听起来就像一个例子

我需要知道寻找最大值的最佳数据结构是什么,它是用C#实现的吗?现在我使用SortedDictioniry,但它对键进行排序,基本上我不需要对键进行排序,但我需要的是一种更快的方法来找到最大值。同样,在我找到最大值之后,我需要对应于该值的键或索引。另外,如果可以快速插入和删除元素,希望不超过O(logn)。有这样的结构吗?我如何使用它? 谢谢大家!

这听起来就像一个例子,有大量关于如何从头开始实现的在线信息(它不是C#标准数据结构的一部分)

例如,看一看这个,并给出详细的解释。

这听起来就像一个例子,有大量关于如何从头开始实现一个的在线信息(它不是C标准数据结构的一部分)

例如,看一看,并附上详细的解释。

您可以使用a或a(就像您已经做的那样)。另一种合适的收集类型是最大堆;但是,.NET类库不包括一个

有关MSDN的比较,请参见。此外,如果您想在最大值上有一个快速的访问时间,我看不到除了按键排序以外的其他可能性。

您可以使用a或a(就像您已经做的那样)。另一种合适的收集类型是最大堆;但是,.NET类库不包括一个



有关MSDN的比较,请参见。此外,如果您想在最大值上有一个快速的访问时间,我认为除了通过键进行排序之外,没有其他的可能性。

如前所述,最大堆将是最有效的。它不是.Net的一部分,但您可以从第三方库中进行选择,如(from)

如前所述,效率最高的是max heap。它不是.Net的一部分,但您可以从第三方库中进行选择,如(from)

您能提供更多信息吗?我假设插入是在你的控制之外完成的,所以你不能简单地在插入时获得最大值?你的作业有问题吗?给我们看看代码。怎么样?你可能对一个名字读得太多了。SortedDictionary使用的“键”只需是唯一的,但它可以是对您有意义的任何值,例如,您正在寻求最大值的值。同样,字典中对应的“值”只是数据。如果它恰好是在其他地方使用的键,例如数据库表,就这样吧。@user1161318-我使用嵌套循环插入元素,这意味着插入了许多元素,这就是为什么我需要一些快速的东西。您能提供更多的信息吗?我假设插入是在你的控制之外完成的,所以你不能简单地在插入时获得最大值?你的作业有问题吗?给我们看看代码。怎么样?你可能对一个名字读得太多了。SortedDictionary使用的“键”只需是唯一的,但它可以是对您有意义的任何值,例如,您正在寻求最大值的值。同样,字典中对应的“值”只是数据。如果它恰好是在其他地方使用的键,例如数据库表,就这样吧。@user1161318-我使用嵌套循环插入元素,这意味着插入的元素很多,这就是为什么我需要一些快速的东西。我同意,对于堆,查询中的最大值是O(1),而对于O(logn)关于插入和删除。谢谢,我会看看你给我的解决方案。我原以为C#中可能有一个已经实现的结构,但看起来我必须手动实现它。@SimeonNikolov不客气!如果这个答案对你有帮助,请不要忘记点击左边的复选标记来接受它:)我同意,对于堆,你在查询时得到一个O(1),在插入和删除时得到一个O(logn)。谢谢,我会看看你给我的解决方案。我原以为C#中可能有一个已经实现的结构,但看起来我必须手动实现它。@SimeonNikolov不客气!如果这个答案对你有帮助,请不要忘记点击左边的复选标记接受它:)谢谢,我会看看你建议的图书馆。谢谢,我会看看你建议的图书馆。