Java接收给定的数据(如:4 88 43 43 98 #...,其中第一个数代表数组长度,其余数代表数组元素,# 号用于终止接收数据),遇到 # 号终止接收; 创建数组,使用直接选择排序(按升序)对给定的数组排序,并输出每次排序结果以及排序完成后的数组。
时间: 2024-09-20 17:07:42 浏览: 67
在Java中,我们可以按照您的描述编写一个程序来接收数据、创建数组,然后使用直接选择排序对数据进行排序。以下是实现的步骤:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数组的长度(直到遇到#):");
String input = "";
while (!input.endsWith("#")) { // 检查是否已接收到#
input += scanner.nextLine();
}
input = input.substring(0, input.length() - 1); // 去掉最后一个#
String[] data = input.split("\\s+"); // 使用空格分割字符串
int[] array = new int[data.length]; // 创建数组
// 将字符串转换为整数并填充数组
for (int i = 0; i < data.length; i++) {
array[i] = Integer.parseInt(data[i]);
}
// 直接选择排序
for (int i = 0; i < array.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
// 输出当前排序状态
System.out.printf("排序后第 %d 步:%s%n", i + 1, array);
}
// 排序完成后输出完整数组
System.out.println("排序完成后的数组:");
System.out.println(Arrays.toString(array));
scanner.close();
}
}
```
当你运行此程序,它会读取用户的输入,直到遇到`#`为止,然后按照直接选择排序的方式将数组元素升序排列,并在每一步都显示排序的状态。排序结束后,会输出完整的排序后的数组。
阅读全文