时间复杂度
平均:O(nlogn)
最优:O(nlogn)
最差:O(nlogn)
空间复杂度
O(1)
java代码
public class Sort {
public static void heapSort(int[] arr){
for (int i=arr.length/2-1;i>=0;i--){
adjustHeap(arr, i, arr.length);
}
for (int j=arr.length-1;j>0;j--){
int temp = arr[0];
arr[0] = arr[j];
arr[j] = temp;
adjustHeap(arr, 0, j);
}
}
public static void adjustHeap(int[] arr, int i, int length){
int temp = arr[i];
for (int k=i*2+1;k<length;k=k*2+1){
if (k+1<length && arr[k]<arr[k+1]){
k++;
}
if (arr[k]>temp){
arr[i] = arr[k];
i = k;
}else {
break;
}
}
arr[i] = temp;
}
public static void main(String[] args) {
int[] list = {8,2,9,4,3,18,21,10};
heapSort(list);
for (int j : list) {
System.out.println(j);
}
}
}