java堆排序算法代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java堆排序算法代码
堆排序是一种基于完全二叉树的排序算法。
它通过将待排序序列构建成一个堆,然后利用堆的性质进行排序。
Java实现堆排序算法的代码如下:
```java
public class HeapSort {
public static void sort(int[] arr) {
int n = arr.length;
// 构建堆(最大堆)
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
// 一个个将堆顶元素取出来,放到最后
for (int i = n - 1; i > 0; i--) {
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
heapify(arr, i, 0);
}
}
// 将以某个结点为根的子树构建为最大堆
private static void heapify(int[] arr, int n, int i) { int largest = i; // 初始化最大值为当前结点
int l = 2 * i + 1; // 左孩子
int r = 2 * i + 2; // 右孩子
// 如果左孩子比当前最大值大,则更新最大值
if (l < n && arr[l] > arr[largest])
largest = l;
// 如果右孩子比当前最大值大,则更新最大值
if (r < n && arr[r] > arr[largest])
largest = r;
// 如果最大值不是当前结点,则交换最大值和当前结点,并递归调用heapify()
if (largest != i) {
int temp = arr[i];
arr[i] = arr[largest];
arr[largest] = temp;
heapify(arr, n, largest);
}
}
}
```
在主函数中调用`HeapSort.sort()`即可对整个数组进行排序。