题目描述 有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述: 第一行输入一个整数N(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出描述: 输出为一行,N+1个有序排列的整数。
示例1 输入 5 1 6 9 22 30 8 输出 1 6 8 9 22 30
AC代码如下
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int len = sc.nextInt(); int[] arr = new int[100]; int index; for (int i=0; i<len; i++) arr[i] = sc.nextInt(); int num = sc.nextInt(); // for (int i=0; i<len; i++) // System.out.print(arr[i] + " "); // System.out.println(); //假设还没插入 boolean flag = false; for (int i=0; i<len; i++){ if (arr[i] > num){ index = i; //记录元素插入位置 for (int j=len-1; j>=index; j--){ arr[j+1] = arr[j]; arr[j] = num; } len++; //插入成功,flag=true flag = true; break; } } //若是在数组中没有找到,则说明是插入到数组最后 if (!flag) arr[len++] = num; for (int i=0; i<len; i++) System.out.print(arr[i] + " "); } }