0
点赞
收藏
分享

微信扫一扫

java 数组的定位与扩容

RockYoungTalk 2022-04-21 阅读 62
javaeclipse

有很多小伙伴对于数组的定位和扩容还掌握不太清楚,今天我们就来系统的学习一遍吧!

我们从一个题来入手,这样更容易明白和理解!

一.问题提出:

已知有一个升序的数组{10,13,52,60}, 现在插入一个元素38,要求插入后的数组仍是一个升序的序列

二.问题分析:

看到这样一道题,大家很容易想到,要想得到插入后的数组,肯定要对原有数组进行扩容,那么如何保证插入38后,数组仍是一个升序的呢?

三.问题解决:

扩容: 首先,我们定义给定的数组 int [] arr = {10,13,52,60};

定义扩容后的数组为 int [] arrNew = new int[arr.length+1];

定位:对于数组的定位,我们一般利用索引(index)来解决,对于本题,可以将38与原来的数组每个元素所对应下标的值进行比较,如果38小于其中的值,就说明插入成功

四.代码实现

package TwoDimensionalArray;
public class TwoDimensionalArrayText {
	public static void main(String[] args) {

      int [] arr = {10,13,52,60};
      int insertNum = 38;
      int index = -1;//定义初始索引为-1

      //先进行定位

      //遍历arr数组,如果发现insertNum<=arr[i],说明i 就是要插入的位置
      //使用 index 保留 index = i;
	  //如果遍历完后,没有发现 insertNum<=arr[i],说明index = arr.length
     for(int i = 0;i < arr.length;i++){
        if(insertNum <= arr[i]){
         insert = i;
         break;
        }
     }
        if(index = -1){//没找到位置
               insertNum = arr.length;
       }
         
     //在进行扩容
 
     int [] arrNew = new int[arr.length+1];
     for(int i = 0,j = 0;i < arrNew.length;i++){
        if(i != index){
          arrNew[i] = arr[j];//说明可以把arr的元素拷贝到 arrNew
          j++;
        }else{
           arrNew[i] = insertNum;
        }
    }
     arr = arrNew;//将arrNew的地址给arr
     System,out.println("====插入后的数组arrNew是");
     for(int i = 0;i < arr.length;i++){
       System.out.print(arr[i]+" ");
    }
  }
}

举报

相关推荐

0 条评论