从头开始构建大小为 N 的二叉堆平均需要 NlogN 次比较,因此是线性时间。
假设两个大小为 N 的二叉堆已经就位,如何在线性时间内构造一个包含所有 2N 个键的二叉堆(使用线性比较次数)?
最佳答案
Constructing a binary heap of size N from scratch takes NlogN compares on an average and thus linearithmic time.
如果你的意思是“从一个大小为 N 的数组构造一个大小为 N 的二叉堆”,那么这不一定是真的。您可以在线性时间内完成。请参阅构建堆 here .
因此对于您的问题,如果您在两个数组中有两个堆,则连接数组并在生成的数组上运行相同的算法将是线性的。
关于java - 在线性时间内从两个大小为 N 的二叉堆构造一个大小为 2N 的二叉堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24907725/