简单排序之一堆排序,时间复杂度最好最坏都是O(nlogn)是一种不稳定对的排序方法。
大顶堆:大顶堆特点左边大于右边, 父节点大于子节点
小顶堆:每个结点的值都小于或等于其左右孩子结点的值
调整的方法是从最后一个非叶子节点开始调整。
最后一个非叶子结点 arr.length/2-1
构建一个小顶堆,就是要将最大的值交换至根节点,然后根节点最后一位数进行交换。整个length–;再重复同样的操作。
public static void sort(int[] arr) {
//1.构建大顶堆
for (int i = arr.length / 2 - 1; i >= 0; i--) {
//从最后一个非叶子节点从下往上, 从右向左调整
adjustHeap(arr, i, arr.length);
}
//2.调整堆结构 + 交换顶对元素与末尾元素
for