首页 > 代码库 > 在排序好的数组插入一个数字,数字要插入到合适的位置上
在排序好的数组插入一个数字,数字要插入到合适的位置上
最近在看以前大一看过的一本书《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+" ");
}