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

时间:2018-05-24 04:46:01

标签: arrays algorithm

如果输入数组已排序,请举例说明从1到n的数字 按递增顺序,那么是否需要O(n)从这样的数组构建最小堆?

编辑1: - 我知道如果我们从n个元素构建最小堆,那么在最坏的情况下它将具有Ω(n * log n)运行时,但是这些n个元素的排序顺序是递增顺序a在O(n)最坏情况下运行时构建最小堆的方法?

编辑2: - 我们是否可以在O(n)中以递减顺序从n大小的数组构建最小堆?如果是这样,为什么呢?

2 个答案:

答案 0 :(得分:0)

如果数组已排序 - 它已经 min-heap,因为主堆属性A[i]<= A[2*i]A[i]<= A[2*i+1] (对于基于1的计算)是的。

请注意,堆构建过程对任何源数组都需要O(n)时间。 Arbitrary found source

答案 1 :(得分:0)

来自Wikipedia on Binary Heap

  

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

页面上的所有详细信息。