import java.util.Arrays;
public class heapSortMy {
static void swap(int[] arr, int i1, int i2) {
int temp = arr[i1];
arr[i1] = arr[i2];
arr[i2] = temp;
}
static void heapify(int[] arr, int len, int largest) {
int largestCur = largest;
int lSon = largest * 2 + 1;
int rSon = largest * 2 + 2;
if (lSon < len && arr[lSon] > arr[largestCur])
largestCur = lSon;
if (rSon < len && arr[rSon] > arr[largestCur])
largestCur = rSon;
if (largest != largestCur) {
swap(arr, largest, largestCur);
heapify(arr, len, largestCur);
}
}
static void heapSort(int[] arr, int len) {
// 建堆
for (int i = (len - 1) / 2; i >= 0; i--) {
heapify(arr, len, i);
}
//排序
for (int i = len - 1; i >= 0; i--) {
swap(arr, i, 0);
heapify(arr, i, 0);
}
}
public static void main(String[] args) {
int[] arr = {1, 2, 5, 12, 4, 62, 1, 76, 23, 376, 24, 14, 23465, 2414, 1};
heapSort(arr, arr.length);
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
Arrays.sort(arr);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
堆排,自己记录
于 2022-08-25 19:34:27 首次发布