Java学习笔记

Java插入数组元素不改变升序顺序

2018-10-11  本文已影响0人  RicherYY

//* 问题:Java中如何向一个已经升序排序好的数组中插入元素,得到的数组依然是升序数组
//* 效果:
//* int[] array = {1,3,7,12,24,36,48};
//* 插入数字9后新数组为
//* int[] newArray = {1,3,7,9,12,24,36,48};

理清一下思路:
1.创建一个新的数组(不要忘了数组创建方式)(扩容)
2.将原来数组的元素赋值给新数组(新数组比老数组多一个位置)
3.查找要插入数组的位置(要输入的数组元素小于被插数组的后一个数)
4.操作下标使原来数组中最后一个下标移动到空的位置,前一个往后一个移动(插队思想)

      
       //* 问题:Java中如何向一个已经升序排序好的数组中插入元素,得到的数组依然是升序数组 
       //* 效果: 
       //* int[] array = {1,3,7,12,24,36,48}; 
       //* 插入数字9后新数组为 
       //* int[] newArray = {1,3,7,9,12,24,36,48}; 
       
      int [] array = {1,3,7,12,24,36,48};   //原数组
      int [] newArray =new int[array.length+1];   //创建新数组,长度比原数组多1
      
      for (int i = 0; i < array.length; i++) {      //将原数组的元素赋值给新数组
          newArray[i] = array[i];
      }
      System.out.print("请输入一个数:");
      Scanner sc = new Scanner(System.in);
      int num = sc.nextInt();                //键盘中录入需要插入的数             
      
      int index = -1;                        //定义要查找插入元素的位置下标
      for (int j = 0; j < newArray.length; j++) {
          if(num < newArray[j]) {            //找到要插入为下标找到下标的的这个位置要比后面的数小(升序情况)
              index = j ;
              break;
          }
      }
      if(index == -1) {
          newArray[newArray.length -1] = num;
          System.out.println("没找到下标");
      }else {
      
      
           //* 从后往前添加,newArray.length-1为数组的最后一位。
           //*  i一定小于 index,因为i要循环插入后的元素,所以小于插入元素的下标。
           //*  i--是因为从数组最大的下标开始,第二次循环是从最后倒是第二个下标开始移动往后移动
          
          for(int i = newArray.length-1; i > index; i--) {
              newArray[i] = newArray[i-1];
          }
          newArray[index] = num;
          }
      for(int i = 0; i < newArray.length; i++) {
          System.out.println(newArray[i]);
      }
上一篇 下一篇

猜你喜欢

热点阅读