java - 在线性时间内从两个大小为 N 的二叉堆构造一个大小为 2N 的二叉堆?

标签 java algorithm binary-heap

从头开始构建大小为 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/

相关文章:

java - 哪个接口(interface)的方法在类中实现了

c++ - 计算范围内的数字算法 (C++)

c++ - 在这种情况下,std::push_heap 的复杂度是 O(n) 而不是 O(logN) 吗?

java - 如何从层序数组构造二叉树?

java - 无法使用 Java 中的交换方法对 int 数组进行排序

Java util 计时器无法正常工作

java - 反编译 jas/ClassEnv 从 Java 应用程序内部创建的 .class 文件

algorithm - 什么是 checkrq 算法(rsync 使用)?

通过加法模拟乘法的算法

java - 给定一个输入数组和求和,返回求和所需的最少元素