在排序好的数组插入一个数字,数字要插入到合适的位置上

本文介绍了一种在已排序数组中插入新元素并保持数组有序的方法。通过遍历数组找到正确位置,实现元素的插入,并展示了如何使用数组和集合两种方式完成任务。

    

近期在看曾经大一看过的一本书《JAVA开发实战经典》李兴华写的。每看一次曾经看过的书,收获都是不一样的,非常多东西曾经不明确,如今一看恍然大悟的感觉;

 

这道题目是书上的习题,没给參考答案,我在网上也没找到好点的,就发上来。感觉这个算法还能够优化得更好。希望高手指点

 

       // 在排序好的数组插入一个数字,数字要插入到合适的位置上

       int intArr[] = { 11, 22,33, 44, 55, 66, 77};

       int insertNum = 34;

       //找到要插入的位置

       int insertIndex=0;

       for (int i = 0; i < intArr.length; i++) {

           if(insertNum<intArr[i]){

              insertIndex=i;

              break;

           }

       }

       //insertNum放入要插入的位置,然后后面每一个都向后移动一位角标

       int intArr1[] =new int[intArr.length+1];

       for (int i = 0; i < intArr1.length; i++) {

           if(i>=insertIndex){

              if(i==insertIndex)//这个仅仅做一次

              intArr1[i]=insertNum;

             

              if(i+1<intArr1.length)//i+1会越界。加推断

              intArr1[i+1]=intArr[i];

           }else{

              //插入之前运行,開始运行插入以后就不运行

              intArr1[i]=intArr[i];

           }

       }

       //循环输出

       for (int i : intArr1) {

           System.out.print(i+" ");

       }


今天不小心翻看了下。事实上能够用集合做: 可是这道题主要是要练习数组的操作

		//用集合做
		System.out.println();
		Insert(intArr, insertNum);
	}

	private void Insert(int[] intArr, int insertNum) {
		//将数组转成集合
		List<Integer> list = new ArrayList<Integer>();
		for (int i : intArr) {
			list.add(i);
		}
		list.add(insertNum);//加入元素
		Collections.sort(list); //排序集合
		System.out.println(list); 
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值