RB树和堆之间的大O作为排序集

时间:2013-06-16 19:38:59

标签: algorithm heap red-black-tree

如果我们基于RB Tree和Heap构造有序集。 insert()和deleteMax()n次。

(1)。什么是Big-O?

我的想法:对于RB树和堆,deleteMax()和insertion()都将采用nlog(n),因此它意味着时间复杂度为O(nlog(n)+ nlog(n))= O(2nlog(n))?

(2)。它们的常数因素的差异如何。

1 个答案:

答案 0 :(得分:1)

假设您正在谈论二进制堆。对于每个insert / maxDeletion,RB和二进制堆的时间复杂度为O(log(n)),其中n是RB /堆中现有元素的数量。斐波纳契堆具有更好的理论时间复杂度。您应该阅读wiki

对于常量,二进制堆优于RB。它也更容易实现,占用空间更少。当你只想跟踪最小值/最大值而不需要知道所有元素的完整排序时,你应该使用堆。