用java使用归并排序对数组降序
时间: 2024-12-13 09:27:52 浏览: 9
在Java中,我们可以使用归并排序算法对整数数组进行降序排列。这里是一个简单的示例:
首先,我们定义一个辅助方法 `merge` 来合并两个已经排好序的子数组,然后创建主方法 `mergeSortDesc` 实现归并排序:
```java
public class MergeSortDescending {
public void mergeSort(int[] array, int left, int right) {
if (left < right) {
int middle = (left + right) / 2;
mergeSort(array, left, middle);
mergeSort(array, middle + 1, right);
merge(array, left, middle, right);
}
}
private void merge(int[] array, int left, int middle, int right) {
int[] temp = new int[right - left + 1];
int i = left, j = middle + 1, k = 0;
while (i <= middle && j <= right) {
if (array[i] >= array[j]) { // 降序排列条件
temp[k++] = array[i++];
} else {
temp[k++] = array[j++];
}
}
// 将剩余的部分复制回原数组
while (i <= middle) {
temp[k++] = array[i++];
}
while (j <= right) {
temp[k++] = array[j++];
}
// 把临时数组的内容复制回原数组
for (i = left; i <= right; i++) {
array[i] = temp[i - left];
}
}
public static void main(String[] args) {
MergeSortDescending sort = new MergeSortDescending();
int[] numbers = {4, 2, 9, 6, 7, 1};
sort.mergeSort(numbers, 0, numbers.length - 1);
// 打印排序后的数组
for (int num : numbers) {
System.out.print(num + " ");
}
}
}
```
当你运行这个程序,数组 `numbers` 将会被按降序排列,输出结果为 `9 7 6 4 2 1`。
阅读全文