java程序:在排序好的数组中添加一个数字,将添加后的数字插入到数组合适的位置。怎么写啊?

2024-11-27 15:36:58
推荐回答(2个)
回答1:

import java.util.Scanner;

/**
 * @author young
 * @Description: 向一个已排序好的数组里面插入一个数,维持原来的排序规律
 * @date 2016年5月11日下午6:45:03
 */
public class InsertSortArrTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 在排序好的数组插入一个数字,数字要插入到合适的位置上
int intArr[] = { 11, 22, 33, 44, 55, 66, 77 };
System.out.println("输入一个插入的数:");
int insertNum = scanner.nextInt();
// 找到要插入的位置
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 + " ");
}
}

}

回答2:

你的数组空间长度应足够,假设:数组为a是整型数组,长度为n,插入位置为m,且m//**************************************
for(int i=n-1;i>=m;i--)
{
a[i]=a[i-1];
}
a[m-1]=XX;
//**************************************
主要思想是:将数组a中m位置以后的元素整体先后移动一个位置,然后将待插入的元素赋值给
a[m-1]即可。
注意:至少被插入的数组最后一个空间是空值,否则插入时后面的值会被前面移来的值覆盖的