java字符串数组堆排序
时间: 2023-06-19 22:08:39 浏览: 50
下面是 Java 中字符串数组堆排序的实现代码:
```java
public class HeapSortStringArray {
public static void heapSort(String[] 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--) {
// 把堆顶元素(最大值)放到数组末尾
String temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
// 重新构建最大堆
heapify(arr, i, 0);
}
}
// 堆化数组
private static void heapify(String[] arr, int n, int i) {
int largest = i; // 初始化最大值为根节点
int left = 2 * i + 1; // 左子节点位置
int right = 2 * i + 2; // 右子节点位置
// 比较左子节点和根节点
if (left < n && arr[left].compareTo(arr[largest]) > 0) {
largest = left;
}
// 比较右子节点和根节点
if (right < n && arr[right].compareTo(arr[largest]) > 0) {
largest = right;
}
// 如果最大值不是根节点,交换根节点和最大值
if (largest != i) {
String temp = arr[i];
arr[i] = arr[largest];
arr[largest] = temp;
// 继续堆化下去
heapify(arr, n, largest);
}
}
public static void main(String[] args) {
String[] arr = {"apple", "banana", "orange", "pear", "grape", "kiwi"};
heapSort(arr);
System.out.println(Arrays.toString(arr));
}
}
```
输出结果为:
```
[apple, banana, grape, kiwi, orange, pear]
```