import java.util.Arrays;import java.util.Scanner;public class Questions {public static void main(String[] args) {/*** 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 * * 实现思路:* 1.定义一个排好序的数组* 2.输入一个要插入的数* 3.数组扩容,把输入的数放在数组的最后一个元素上* 4.重新对扩容数组排序*/Scanner input = new Scanner(System.in);//1.定义一个排好序的数组//int[] nums = new int[] {45,67,76,89,100,150};int[] nums = new int[] {45,23,21,20,19,8};//输出原数组System.out.println("排好序的数组为:");printArr(nums);//2.输入一个要插入的数System.out.println("\n请输入一个数:");int num = input.nextInt();int len = nums.length;//3.数组扩容,把输入的数放在数组的最后一个元素上nums = Arrays.copyOf(nums, len+1);/*************考虑升序排序第一种方法开始**************************///把输入的数放在数组的最后一个元素上//nums[len] = num;//4.重新对扩容数组排序//Arrays.sort(nums);/*************排序第一种方法结束**************************//*************考虑降序排序第二种方法开始**************************/if(num<=nums[len-1]) {//如果数据大于等于最后一个数组,放最后nums[len]=num;}else {//找到插入的位置int spaceIndex=-1;for (int i = 0; i <= len; i++) {if(num>=nums[i]) {spaceIndex=i;break;}}//插入数据,插入到相应位置,其它元素后移int temp;for (int i = len; i >=spaceIndex ; i--) {if(i==spaceIndex) {nums[i] = num;}else {temp = nums[i-1];nums[i]=temp;}}}/*************排序第二种方法结束**************************///打印数据System.out.println("\n将"+num+"插入数组中并排好序如下:");printArr(nums);}private static void printArr(int[] nums) {for (int i = 0; i < nums.length; i++) {System.out.print(nums[i]+" ");}}}
如果觉得《有一个已经排好序的数组。现输入一个数 要求按原来的规律将它插入数组中。》对你有帮助,请点赞、收藏,并留下你的观点哦!