堆排序(C语言实现)算法思想步骤程序
算法思想
见:
4. 选择排序—堆排序(Heap Sort)
算法导论——堆排序heapsort
步骤
1. 将n个元素建立初始堆,第一个节点放在数组下标1中,因此n个节点对应数组 a[1] ~ a[n],第 i 个节点的左孩子节点下标为 2i,右孩子节点为 2i + 1。
找到最后一个非叶子节点:
若节点 i 为最后一个非叶子节点,则
(a) 节点i只有左孩子节点(n 为偶数)
2*i = n;
i = n/2;
(b) 节点i有左右孩子节点 (n 为奇数