-3

如果我有这个 A = [4 2 8 6 5 3] 并且我调用 BuildHeap(A)

BuildHeap(A){
 heap_length[A] ← length[A]
 for i ← floor(length[A]/2) downto 1 do
 Heapify(A, i)
}

它会像这样构建它

     4
  2     8
 6 5   3

或者像这样:

     8
  6     4
 2 5   3
4

1 回答 1

2

如果你创建一个最小堆,

    2
  4   3
 6 5 8

如果你创建一个最大堆,

    8
  6   4
 2 5 3

请记住,最小堆总是在顶部有“最小”元素,而最大堆总是有“最大”。

创建堆的自下而上的过程是这样的:

在此处输入图像描述

要查看示例,请访问此处:http ://www.brpreiss.com/books/opus5/html/page502.html

于 2012-11-23T19:11:44.043 回答