Arrays 是否有O(n)算法来构建最小堆?

Arrays 是否有O(n)算法来构建最小堆?,arrays,algorithm,Arrays,Algorithm,如果对输入数组进行了排序,比如说从1到n的数字 按照递增的顺序,从这样的数组构建最小堆需要O(n)吗 编辑1:-我知道如果我们从n个元素构建一个最小堆,那么它将有一个Ω(n*logn)最坏情况下的运行时间,但这n个元素按递增顺序排序是否可以在O(n)最坏情况下的运行时间内构建最小堆 编辑2:-我们是否可以从一个n大小的数组以O(n)的降序构建一个最小堆?如果是,那么为什么呢?如果数组被排序-它已经是最小堆,因为主堆属性A[i]来自: 堆通常使用数组实现。任何二叉树都可以 存储在数组中,但因为二进

如果对输入数组进行了排序,比如说从1到n的数字 按照递增的顺序,从这样的数组构建最小堆需要O(n)吗

编辑1:-我知道如果我们从n个元素构建一个最小堆,那么它将有一个Ω(n*logn)最坏情况下的运行时间,但这n个元素按递增顺序排序是否可以在O(n)最坏情况下的运行时间内构建最小堆


编辑2:-我们是否可以从一个n大小的数组以O(n)的降序构建一个最小堆?如果是,那么为什么呢?

如果数组被排序-它已经是最小堆,因为主堆属性
A[i]来自:

堆通常使用数组实现。任何二叉树都可以 存储在数组中,但因为二进制堆始终是完整的 二叉树,它可以存储紧凑


页面上给出的所有详细信息。

如果数组已排序,则它已处于堆顺序。因此,假设您将堆建模为一个数组,您根本不需要做任何事情,这比O(n)要好得多。除非您可能需要将数组复制到堆中……是的,我需要将数组复制到堆中,而不仅仅是将堆表示为数组。您的数组已经是一个堆了。您阅读了答案吗?两者都包含指向复杂性描述的链接。