假设我们有n个元素的二进制堆,并希望插入n个其他元素(不一定一个接一个)。总共需要多少时间?
我认为是theta(n logn),因为一次插入需要logn。
假设我们得到:
我们具有以下 插入 属性:
所以对于 每种情况 ,我们都有
最坏的情况是,当我们插入新的最小值时,堆必须遍历整个分支。
BestCase的情况是,对于最小堆(顶部堆最小),我们插入BIG(在更新分支上最大堆)值(因此,堆立即停止)。
您已经问过关于已经包含n个元素的堆上的n个操作的序列,它的大小会增加
from n to 2*n
渐近是…
n=Θ(n) 2*n=Θ(n)
是什么简化了我们的方程式。(我们不必担心 n 的增长,因为它的增长是由常数决定的)。
因此,我们有“ n次插入”操作:
PS要显示ThetaΘ和OmegaΩ符号,您需要安装UTF-8 /才能兼容。