zoukankan      html  css  js  c++  java
  • Java数组Array题目记录(插入)

    题目:

    在有序的数组 int[] arr = {10, 12, 45, 90} 中 插入一个值,使插入的数组仍然是有序的。

    主题思想:掌握下标的使用,控制两个数组的下标,实现效果

    方法一(优):

    先取得比较数值应插入的下标,然后在进行循环插入

    public static void main(String[] args) {
            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 = arr.length;// 定义一个index来获取下标,初始值为旧数组长度
            for (int i = 0; i < arr.length; i++) {
                // 判断输入的数值应该储存的位置,小于谁就储存在谁的位置
                if (num < arr[i]){
                    index = i;
                    break;
                }
            }
            // 循环赋值
            for (int i = 0, j = 0; i < arrNew.length; i++) {
                //当不等于index就正常赋值,旧数组下标正常移动
                if (i != index){
                    arrNew[i] = arr[j];
                    j++;
                }else{// 等于index 时,旧数组下标不移动,新数组添加值
                    arrNew[i] = num;
                }
            }
            arr = arrNew;
            System.out.println(Arrays.toString(arr));
        }

    方法二:

    使用循环比较赋值的方法,有三种情况:

    1、当输入的数值小于第一个数时,就插入在下标为0的位置;

    2、用输入的数值去进行比较,当大于当前下标数且小于后一个数,就在下一个下标进行赋值

    3、当大于最后一个值就在最后添加

    public static void main(String[] args) {
            int[] arr = {10, 12, 45, 90};
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入插入的数字:");
            int num = sc.nextInt();
            // 设置新数组的长度+1
            int[] arrNew = new int[arr.length + 1];
            // j的作用是控制旧数组输出的值
            for (int i = 0, j = 0; i < arrNew.length; i++,j++) {
                arrNew[i] = arr[j];
                if (i == 0 && arr[j] > num) {// 当输入的值小于第一个数时,将改数赋值给新数组第一个值
                    arrNew[0] = num;
                    // 由于新数组的值被覆盖,将旧数组的下标重新退回0重新赋值
                    j--;
                } else if (i == arr.length - 1 && arr[j] < num) {// 当循环运行到最后时判断输入的数字是否大于最后一个数,i == arr.lenght是判断前面是否循环完毕
                    // 如果大于,就在新数组的最后添加
                    arrNew[i + 1] = num;
                    // 退出循环
                    break;
                } else if (arr[j] < num && arr[j + 1] > num) {// 判断输入的数字是否大于当前数字小于后一个数字
                    // 如果在就将num插入到后一位
                    arrNew[i + 1] = num;
                    // 控制新数组的下标,提前一位,避免和新插入的数字冲突
                    i++;
                }
            }
            arr = arrNew;
            System.out.println(Arrays.toString(arr));
        }
  • 相关阅读:
    软件工程课程总结
    《20171122-构建之法:现代软件工程-阅读笔记》
    课后作业-阅读任务-阅读提问-4
    20171012-构建之法:现代软件工程-阅读笔记
    课后作业-阅读任务-阅读提问-2
    《20170911-构建之法:现代软件工程-阅读笔记》
    OSI七层模型
    团队编程项目作业名称-团队一阶段互评
    结对-结对编程项目作业名称-结对项目总结
    团队-团队编程项目作业名称-开发文档
  • 原文地址:https://www.cnblogs.com/MoonASixpence/p/14818347.html
Copyright © 2011-2022 走看看