一、堆排序概念
- 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序。
时间复杂度:O(nlogn)
空间复杂度:O(1)
稳定性:不稳定
二、实现描述
三、代码实现(https://www.cnblogs.com/chengxiao/p/6129630.html)
public static void heapSort(int[] arr) {
for (int i = arr.length / 2 - 1; i >= 0; i--) {
adjustHeap(arr,i,arr.length);
}
for (int i = arr.length-1; i > 0; i--) {
swap(arr, 0, i);
adjustHeap(arr,0,i);
}
}
public static void adjustHeap(int[] arr, int i,int len) {
int temp = arr[i];
for (int k = 2 * i + 1; k < len; k = 2 * k + 1) {
if (k + 1 < len && arr[k] < arr[k + 1]) {
k++;
}
if (temp < arr[k]) {
arr[i] = arr[k];
i = k;
}else{
break;
}
}
arr[i] = temp;
}
public static void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}