Java50道经典习题-程序30 插入数字
题目:有一个已经排好序的数组。现输入一个数,要求将它插入数组中后数组依然是排好序的。
分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
1 import java.util.Arrays; 2 import java.util.Scanner; 3 public class Prog30 { 4 public static void main(String[] args) { 5 int[] array = {0,1,2,3,5,7,8,9,12};//定义一个升序数组 6 //int[] array = {12,9,8,7,5,3,2,1,0};//定义一个降序数组 7 System.out.println("定义的数组为:"); 8 for(int j=0;j<array.length;j++) {//遍历定义好的数组 9 System.out.print(array[j]+" "); 10 } 11 //获取用户输入的数 12 Scanner input=new Scanner(System.in); 13 System.out.println();//换行 14 System.out.println("请输入一个整数:"); 15 int n=input.nextInt(); 16 input.close(); 17 //默认将添加的元素加到数组末尾,原始数组扩容1 18 array=Arrays.copyOf(array, array.length+1); 19 array[array.length-1]=n; 20 //当定义的数组为升序数组时 21 if(array[0]<=array[array.length-2]) { 22 System.out.println("插入一个数之后的数组为:"); 23 Arrays.sort(array);//重新排序 24 for(int k=0;k<array.length;k++) {//遍历新数组 25 System.out.print(array[k]+" "); 26 } 27 } 28 //当定义的数组为降序数组时 29 if(array[0]>=array[array.length-2]) { 30 System.out.println("插入一个数之后的数组为:"); 31 Arrays.sort(array);//重新排序 32 //将排好序的升序数组逆序输出 33 for(int i=array.length-1;i>=0;i--) { 34 System.out.print(array[i]+" "); 35 } 36 } 37 } 38 } 39 /*运行结果 40 定义的数组为: 41 0 1 2 3 5 7 8 9 12 42 请输入一个整数: 43 10 44 插入一个数之后的数组为: 45 0 1 2 3 5 7 8 9 10 12 46 */
The only way to do great work is to love what you do.