java从键盘依次输入10个正整数,存放在数组中,每输入一个整数就进行排序,而不是最后排序
1、考点是插入排序
2、解题思路,声明固定长度数组,依次采集满足长度的数字后进行实时排序
3、需要注意的点,输入数字的长度和数组的长度完全靠约定,对健壮性影响较大,固可设计为resizeable形式。另采用每次输入都重新排还是定义一个排后数组,每次对新增的数字append后再排序,两者的效率不一样,下面给出前者示例,题主可自己尝试优化成后者
void sort(int arr[])
{
int n = arr.length;
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
static void printArray(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}
public static void main(String args[])
{
ArrayList<Integer> numbers = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
System.out.println("...请输入数字...");
while (true) {
String input = scanner.next();
if(StringUtils.isNumeric(input)) {
numbers.add(Integer.valueOf(input));
int[] arr = numbers.stream().mapToInt(i -> i).toArray();
InsertionSort ob = new InsertionSort();
ob.sort(arr);
printArray(arr);
}
}
}