(用数组实现 电脑随 机生成5个两位数 用户 输入一个两位数 按从小 到大顺序对6个数字进行 排序。(要求对每行进行 详细注释)
时间: 2024-09-23 12:12:38 浏览: 46
```java
import java.util.Arrays;
import java.util.Scanner;
public class RandomSort {
// 主函数,用于程序入口
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象,用于获取用户输入
// 生成并存储五个随机两位数
int[] randomNumbers = generateRandomNumbers(5);
System.out.println("随机生成的五位数:");
printArray(randomNumbers); // 打印随机数数组
// 获取用户输入的两位数
System.out.print("请输入一个两位数:");
int userInput = scanner.nextInt();
// 将用户输入添加到数组末尾,并排序整个数组
Arrays.sort(randomNumbers, 0, randomNumbers.length + 1);
mergeSort(randomNumbers, 0, randomNumbers.length - 1, userInput);
// 输出排序后的所有数字,包括用户输入
System.out.println("按从小到大排序的结果(包括用户输入):");
printArray(randomNumbers);
// 关闭扫描器
scanner.close();
}
// 生成指定长度的随机两位数数组
private static int[] generateRandomNumbers(int length) {
int[] numbers = new int[length];
for (int i = 0; i < length; i++) {
numbers[i] = (int)(Math.random() * 90) + 10; // 生成10~99之间的随机整数
}
return numbers;
}
// 冒泡排序函数,对给定范围内的数组进行排序
private static void bubbleSort(int[] arr, int start, int end) {
for (int i = start; i < end; i++) {
for (int j = 0; j < end - i - 1; j++) {
if (arr[j] > arr[j + 1]) { // 如果当前元素大于下一个元素
// 交换位置
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 合并排序函数,用于将用户输入插入到已排序数组的合适位置
private static void mergeSort(int[] arr, int left, int right, int value) {
if (left < right) {
int mid = (left + right) / 2;
// 分治法:递归地对左右两半进行排序
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
// 合并过程,比较用户输入和中间值,逐步调整位置
merge(arr, left, mid, right, value);
}
}
// 合并两个有序数组函数
private static void merge(int[] arr, int left, int mid, int right, int value) {
int[] merged = new int[right - left + 1]; // 新数组用于合并结果
int i = left, j = mid + 1, k = 0;
// 把较小的元素放入新数组,同时保持原数组不变
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
merged[k++] = arr[i++];
} else {
merged[k++] = arr[j++]; // 如果右边的元素小,将其放入
}
}
// 处理剩余未加入新数组的部分
while (i <= mid) {
merged[k++] = arr[i++];
}
while (j <= right) {
merged[k++] = arr[j++];
}
// 将合并后的数组复制回原数组
for (i = left, k = 0; i <= right; i++, k++) {
arr[i] = merged[k];
}
}
// 打印数组函数
private static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
}
```
阅读全文