37.2℃691 2021-12-23 11:37 采纳率: 90.6%
浏览 73
已结题

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

img


运行效果如下

img

  • 写回答

2条回答 默认 最新

  • ヾ凉秋 2021-12-23 11:47
    关注
     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();//换行
    
        }
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 创建了问题 12月23日