从线性时间大小为N的两个二进制堆构造一个大小为2N的二进制堆?

时间:2014-07-23 10:14:33

标签: java algorithm binary-heap

从头开始构造大小为N的二进制堆需要NlogN比较平均值,从而比较线性时间。

鉴于大小为N的两个二进制堆已经到位,如何在线性时间内构建包含所有2N密钥的单个二进制堆(使用线性比较数)?

1 个答案:

答案 0 :(得分:5)

  

从头开始构建一个大小为N的二进制堆,需要NlogN比较平均值,从而比较线性时间。

如果您的意思是“从大小为N的数组构造大小为N的二进制堆”,那么这不一定是真的。你可以在线性时间内完成。请参阅构建堆 here

所以对于你的问题,如果你有两个数组中的两个堆,连接数组并在结果数组上运行相同的算法将是线性的。