private static void heapSort(int[] arr) {
int n = arr.length;
while (n != 0) {
//1、把数组变成大顶堆
for (int i = n / 2; i >= 0; i--) {
int left = i * 2 + 1;
if (left < n && arr[i] < arr[left]) {
swap(arr, i, left);
}
int right = i * 2 + 2;
if (right < n && arr[i] < arr[right]) {
swap(arr, i, right);
}
}
//2、堆顶元素和最后一个元素交换,最后一个元素脱离堆结构
swap(arr, 0, --n);
}
}
private static void swap(int[] arr, int i, int j) {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
手搓一个简单的堆排序(Java实现)
最新推荐文章于 2024-09-30 10:07:25 发布