JAVA利用归并排序算法将读入的 n 个数从小到大排序后输出
时间: 2023-07-05 15:32:32 浏览: 99
好的,下面是利用归并排序算法将读入的 n 个数从小到大排序后输出的 Java 代码实现:
```java
import java.util.*;
public class MergeSort {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = input.nextInt();
}
int[] sorted_nums = mergeSort(nums);
for (int num : sorted_nums) {
System.out.println(num);
}
}
public static int[] mergeSort(int[] nums) {
if (nums.length <= 1) {
return nums;
}
int mid = nums.length / 2;
int[] left = Arrays.copyOfRange(nums, 0, mid);
int[] right = Arrays.copyOfRange(nums, mid, nums.length);
left = mergeSort(left);
right = mergeSort(right);
return merge(left, right);
}
public static int[] merge(int[] left, int[] right) {
int[] result = new int[left.length + right.length];
int i = 0, j = 0, k = 0;
while (i < left.length && j < right.length) {
if (left[i] < right[j]) {
result[k++] = left[i++];
} else {
result[k++] = right[j++];
}
}
while (i < left.length) {
result[k++] = left[i++];
}
while (j < right.length) {
result[k++] = right[j++];
}
return result;
}
}
```
在这段代码中,`mergeSort` 函数是归并排序的主函数,用于将待排序序列分成若干个子序列,并进行排序;`merge` 函数则是用于对两个有序序列进行合并的函数。
最后,我们可以通过以下代码读入 n 个数并进行排序:
```java
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = input.nextInt();
}
int[] sorted_nums = mergeSort(nums);
for (int num : sorted_nums) {
System.out.println(num);
}
```
这样,就可以将读入的 n 个数从小到大排序后输出了。
阅读全文