java中数组插入元素

问题描述

已知有个升序的数组,要求插入一个元素,该数组顺序依然是升序,
//比如:[10,12,45,90],添加23后,数组为[10,12,23,45,90]


解决方案:

//思路 数组扩容 + 定位
//1.我们先确定 添加数应该插入到哪个索引
//2.然后扩容

//先定义原数组
		int[] arr = {10,12,45,90};
		int insertNum = 23;
		int index = -1;//index就是要插入的位置

		//遍历 arr数组,如果发现insertNum <= arr[i],说明i就是要插入的位置
		//使用 index 保留 index = i;
		//如果遍历完后,没有发现 insertNum <= arr[i],说明index = arr.length
		//即:添加到arr的最后
		
		for (int i = 0;i < arr.length ;i++ ) {
			if (insertNum <= arr[i]) {
				index = i;
				break;//找到位置后,就退出
			}
		}

		//判断
		if (index == -1) {//说明没有找到位置
			index = arr.length;
		}

		//先创建一个新的数组,大小arr.length + 1
		int[] arrNew = new int[arr.length + 1];
		//将arr的元素拷贝到arrNew,并且要跳过index位置
		
		for (int i = 0,j = 0;i < arrNew.length ;i++ ) {
			
			if (i != index) {//说明可以把arr的元素拷贝到arrNew
				arrNew[i] = arr[j];
				j++;
			} else {//i这个位置就是要插入的数
				arrNew[i] = insertNum;
			}
		}
		arr = arrNew;
		for (int i = 0;i < arr.length ; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println("index=" + index );

运行结果如下:

在这里插入图片描述

原文链接:https://www.bilibili.com/video/BV1fh411y7R8?p=187

你可能感兴趣的:(java)