添加到 SortedSet;及其复杂性

发布于 2024-08-26 10:54:15 字数 321 浏览 7 评论 0原文

MSDN 声明以下 SortedSet(T).Add 方法:

如果 Count 小于内部数组的容量,则此方法的操作时间复杂度为 O(1)。

有人可以解释一下“怎么会这样”吗?我的意思是,当添加新值时,我们需要找到正确的位置来添加值(将其与其他值进行比较),并且内部实现看起来像具有 O (log N) 插入复杂度的“红黑树”。

MSDN states the following SortedSet(T).Add Method :

If Count is less than the capacity of the internal array, this method is an O(1) operation.

Could someone please explain "how so"? I mean when adding new value we need to find a correct place to add a value (comparing it with another values) and internal implementation looks like a "Red-Black tree" with O (log N) insertion complexity.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黄昏下泛黄的笔记 2024-09-02 10:54:15

该评论根本就是错误的。是的,它是一棵红黑树,插入的时间复杂度为 O(log(n))。使用 Reflector 查看一下可以证明这一点,私有 AddIfNotPresent() 方法包含一个 while() 循环来查找插入点,使用正常的红黑节点遍历。

The comment is simply wrong. Yes, it is a red-black tree, O(log(n)) for inserts. Taking a look with Reflector bears this out, the private AddIfNotPresent() method contains a while() loop to find the insertion point, using normal red-black node traversal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文