编写程序实现如下功能。要求用户给定一个升序整形数组,并从键盘上输入任意一整数,将该整数插入到数组中使得数组任然有序。并将更新后的数组输出。(40分)
提示:假设定义数组a并赋初始值,注意数组是升序数组,数组a的元素需要从小到大是。从键盘输入一个数n。首先需要确定n出入数组的位置下标。依次比较n和每个数组元素,当n比某个数组元素小的时候,则可确定n应插入到当前元素的前一个位置。
评分标准:
程序书写格式规范,变量命名规范(10分);
程序算法正确,编译通过(20分)
程序计算结果正确

解决方案 »

  1.   

    public void insert() {
            int[] a = {-60,-41,-21,-2,-1,0,4,12,56,214};
            Scanner input = new Scanner(System.in);
            System.out.println("Please enter a number.");
            int n = input.nextInt();
            int[] b = new int[a.length+1];
            for(int i=0;i<a.length;i++) {
                if(n<-a[i]) {
                    b[i] = n;
                    System.arraycopy(a, 0, b, 0, i);
                    System.arraycopy(a, i, b, i+1, b.length-i-1);
                    break;
                }
            }
            System.out.println(Arrays.toString(b));
        }
      

  2.   

    public static void main(String[] args) {
            int[] test = {0, 5, 16, 48, 62, 84};
            int index = 0; // 记录插入时的下标
            System.out.println("请输入任意整数:");
            Scanner scan = new Scanner(System.in);
            // 判断输入是否是整数
            if (scan.hasNextInt()) {
                // 将输入值转为整数
                int num = scan.nextInt();
                for (int j = 0; j < test.length - 1; j++) {
                    //1 找到要插入位置的下标
                    if (num < test[j]){
                        index= j;
                        break;
                    }
                }
                // 2 定义新数组
                int[] newTest = new int[test.length + 1];
                for (int i = 0; i < test.length; i++) {
                    newTest[i] = test[i];
                }
                //3 将后面的数据向后挪,处理index后面的数据
                for(int i = newTest.length - 1; i > index; i--){
                    newTest[i]=newTest[i-1];
                }
                newTest[index] = num;
                System.out.println(Arrays.toString(newTest));
            }
        }