输入一个数,将其插入到一个已排好序的数组中,使得原数组依然按原序有序。

img


运行效果如下

img

 public class demo {
            public static void main(String[] args){
        int[] arr = {2,5,6,7,8,9,10};
        Scanner sc = new Scanner(System.in);
       System.out.print("插入之前的数组:");
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println("");
        System.out.println("请输入要插入的数:");
        int num = sc.nextInt();
        //定义一个比原数组长度大一的空数组
       int[] arr2 = new int[arr.length+1];
        //如果输入的比有序数组的最后一个元素还大,就直接放到新数组的最后一个
        if(num>arr[arr.length-1]){
            arr2[arr2.length-1]=num;
            for(int i=0;i<arr.length;i++){
                arr2[i] = arr[i];
            }
        }else{
            int i;
            for(i=0;i<arr.length;i++){
                if(arr[i]<num){
                    arr2[i] = arr[i];
                }else{
                    arr2[i] = num;
                    break;//例如1,2,3,5,6;插入4;1,2,3,4,插入之后要跳出,否则后面就全是4
               }
            }
            for(int j=i+1;j<arr2.length;j++){
                arr2[j]=arr[j-1];//把剩下的元素添加尽量,例如上面的5,6
            }
        }
        traverse(arr2);
 }
    //定义遍历方法
    public static void traverse(int[] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");//不换行遍历,以空格隔开
        }
        System.out.println();//换行

    }

}

package com;

import java.util.Scanner;

public class Text02 {
    public static void main(String[] args) {
        int[] arr = {0,1,2,3,5,6,7};
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入数字:");
        int num = sc.nextInt();
        int[] arr1 = insert(arr, num);
        System.out.print("原数组:");
        out(arr);
        System.out.print("新数组:");
        out(arr1);
    }
    public static int[] insert(int[] arr, int num){
        boolean bo = true;
        int length = arr.length;
        int[] arr1 = new int[length+1];
        for(int i=0;i<length;i++){
            if(bo){
                if(arr[i]>=num){
                    bo = false;
                    arr1[i] = num;
                    arr1[i+1] = arr[i];
                } else{
                    if(i == length-1){
                        arr1[i] = arr[i];
                        arr1[i+1] = num;
                    }else{
                        arr1[i] = arr[i];
                    }
                }
            }else{
                arr1[i+1] = arr[i];
            }
        }
        return arr1;
    }
    public static void out(int[] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]);
        }
        System.out.println();
    }
}