第六章 堆排序
总结:这章主要讲了堆、建堆、堆排序、优先级队列等。
1. 堆
堆可以被视为一颗完全二叉树,底层用数组实现。
length[A]: 数组中的元素个数
heap-size[A]: 存放在A中的堆的元素个数
树的根A[1]
给定某个结点的下标i:
父节点PARENT(i)=[i/2]
左节点LEFT(i)=2i
右节点RIGHT(i)=2i+1
最大堆:A[PARENT(i)] >= A[i]
最小堆:A[PARENT(i)] <= A[i]
2. 保持堆的性质
MAX-HEAPIFY(A, i)
输入数组A,下标iÿ