数组练习题

已知有一个升序的数组,要求插入有个元素,该数组顺序依然是升序,比如:[10,12,45,90],添加23后,数组为[10,12,23,45,90]

 //index是数字插入的位置,遍历时,index = i
        //遍历数组,如果发现insertNum <= arr[i],说明i就是要插入的位置
        //如果遍历完后,没有发现insertNum <= arr[i],说明index = arr.length,即将插入的数字排到最后
        Scanner sc = new Scanner(System.in);
        int[] arr = {10,12,45,90};
        int[] arrNew =new int[arr.length + 1];
        System.out.println("请输入您要插入的数字");
        int num = sc.nextInt();
        int index = -1 ;
        for(int i = 0 ; i < arr.length ; i++){
            if (num <= arr[i]){//如果插入的数字,小于下标为i的数字,那么此处就是num要插入的位置
                index = i;//记录要插入的位置
                break;
            }
        }
        for(int i = 0 , j = 0 ; i < arrNew.length ; i++){
            if (i != index) { //如果每走到要插入的位置,那么将旧数组的内容插入新数组,同时j代表旧数组的遍历,j往前走一位,这种情况也包括插入发生在最后一位,前面的全部拷贝就数组的内容。
                arrNew[i] = arr[j];
                j++;
            }else{
                arrNew[i] = num;
            }
        }
        arr = arrNew; //重定向将新数组指向原来的数组;
        System.out.println("========插入后的新数组========");
        //遍历数组
        for (int i = 0 ; i < arr.length ; i++){
            System.out.print(arr[i]+" ");
        }

posted on 2021-12-01 16:00  老菜农  阅读(33)  评论(0编辑  收藏  举报

导航