Java入门_一维数组_第一题_升序数组

声明

咱是个新手,没啥技术只会最基础的,见谅哈。
更简化的方法还请大佬指教。

题目:

已知有个升序数组的数组,要插入一个元素,该数组顺序依然是升序。
例如:{ 25 , 49 , 74 , 99 },添加‘ 77 ’后,数组为{ 25 , 49 , 74 , 77 , 99 }。

思路:

  1. 建立第一个数组,输入升序的数值。
  2. 建立索引,确立要添加的数值位置。
  3. 创建第二个数组,将数据拷贝一份随即插入要添加的数组。
  4. 销毁第一个数组,节约空间(说实话我感觉应该不缺这点空间吧嘿嘿)。最后遍历一遍并输出添加完的数组。

初始代码如下:

具体细节在代码中都有备注。

import java.util.Scanner;
public class twoArr {
    public static void main(String[]args){
        int index = -1;//创建索引
        int []arr = new int[]{ 25 , 49 , 74 , 99 };
        int []arrNew = new int[arr.length + 1];
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入你所喜欢的整数");
        if (myScanner.hasNextInt()){//判断输入的值是否为整数类型
            int add = myScanner.nextInt();
            for (int i = 0;i < arr.length;i++){//确定索引的位置
                if (arr[i] >= add){//用 >= 是因为可能出现数值相同的情况
                    index = i;
                    break;//确定新增数值位置,跳出循环。
                }
            }
            if (index == -1){//比较到最后依然没找到说明新增数值是最大值,于是索引的值是数组长度
                index = arr.length;
            }
            for (int i = 0,j = 0;i < arrNew.length;i++){ //i 遍历arrNew数组,j 遍历arr数组
                if (index != i){
                    arrNew[i] = arr[j];
                    j++;
                }else{
                    arrNew[i] = add;
                }
            }
            arr = arrNew;//销毁第一个数组,可以吧arrNew看做这个数组的地址,arr数组地址边变为arrNew一样后,原地址空间就被销毁了
            for (int i= 0; i < arrNew.length;i++){
                System.out.print(arrNew[i] + "\t");
            }
        }else{
            System.out.println("你输入错误,这不是整数");
        }
    }
}

日常欣赏,课后娱乐(哥们是真心喜欢啊)

热门相关:骑士归来   仗剑高歌   薄先生,情不由己   刺客之王   照见星星的她