1 过程
2 代码
/**
* 堆排序:max堆 O(nlogn)
* @param arr
*/
public static <T extends Comparable<T>> void heapSort(T[] arr) {
// 对数组建堆(max堆)
// 因为完全二叉树的最后一个非叶子节点的编号(即数组下标)是(n/2)- 1(其中n/2向下取整)
// 所以调整只需要从编号(n/2)- 1个节点开始。
for (int i = arr.length/2-1; i >= 0; i--) {
percDown(arr, i, arr.length);
}
// 删除堆中的最大值
for (int i = arr.len