ABC23 发表于 2018-4-23 18:31:55

【堆排序为什么每次要交换根结点和末尾结点的位置】

HEAPSORT(A):
        BUILD-MAX-HEAP(A)
        for i = A.length downto 2
                exchange A with A
                A.heap-size = A.heap-size - 1
                MAX-HEAPIFY(A, 1)
============================
以上是堆排序(heapsort)的伪代码。
为什么每次要exchange A和A(伪代码中A代表第一个元素)。

另外,堆排序一定要用最大堆(大根堆)吗?如果用小根堆好像也可以实现。

溯影 发表于 2018-4-23 18:41:57

顶帖,虽然还没有学到堆排序{:10_279:}

ABC23 发表于 2018-4-23 18:57:25

溯影 发表于 2018-4-23 18:41
顶帖,虽然还没有学到堆排序

谢顶
页: [1]
查看完整版本: 【堆排序为什么每次要交换根结点和末尾结点的位置】