如果我们基于RB Tree和Heap构造有序集。 insert()和deleteMax()n次。
(1)。什么是Big-O?
我的想法:对于RB树和堆,deleteMax()和insertion()都将采用nlog(n),因此它意味着时间复杂度为O(nlog(n)+ nlog(n))= O(2nlog(n))?
(2)。它们的常数因素的差异如何。
答案 0 :(得分:1)
假设您正在谈论二进制堆。对于每个insert / maxDeletion,RB和二进制堆的时间复杂度为O(log(n))
,其中n
是RB /堆中现有元素的数量。斐波纳契堆具有更好的理论时间复杂度。您应该阅读wiki。
对于常量,二进制堆优于RB。它也更容易实现,占用空间更少。当你只想跟踪最小值/最大值而不需要知道所有元素的完整排序时,你应该使用堆。