gpt4 book ai didi

c# - 我应该在 C# 中选择哪个通用集合来维护排序的 "list"

转载 作者:行者123 更新时间:2023-11-30 19:28:17 24 4
gpt4 key购买 nike

我有一个 Node 类,它有一个 float Distance 属性。

我想要一个数据结构,我可以将所有节点放入其中,并且它们将按顺序存储(例如在 AVL 树或红黑树中)。

  • 我想在 O(log(n)) 中插入
  • 我想检索并删除 O(log(n)) 中的最小值

我尝试使用排序字典,但事实证明它完全没用,因为他不能容纳两个距离相同的项目。

使用 list 和 Sort i 是不可能的,因为移除是 (O(n)) 并且找到 Minimum 也是 (O(n))

我所需要的只是一个简单的通用红黑树结构,它将按我将提供的某些谓词进行排序(即比较节点内的距离)

BCL中有这样的数据结构吗?

最佳答案

您想使用 c5 集合库的 TreeBag<T>类(class)。它是一棵允许重复的红黑树(因此,bag 而不是 set)。按项目值的索引访问是 O(log n);插入和删除是 O(log n) 摊销的。

C5 Collection Library 由 Microsoft 资助;它是开源的并且免费可用。价格合适。

http://www.itu.dk/research/c5/

关于c# - 我应该在 C# 中选择哪个通用集合来维护排序的 "list",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com