我是初学者,用普通的方法哦,不要直接调用什么API,不是很懂里面的。
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 + " ");
}
}
}
/**
* @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 + " ");
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-06-08
你的数组空间长度应足够,假设:数组为a是整型数组,长度为n,插入位置为m,且m<n,插入元素为XX,你用如下程序段即可实现插入操作
//**************************************
for(int i=n-1;i>=m;i--)
{
a[i]=a[i-1];
}
a[m-1]=XX;
//**************************************
主要思想是:将数组a中m位置以后的元素整体先后移动一个位置,然后将待插入的元素赋值给
a[m-1]即可。
注意:至少被插入的数组最后一个空间是空值,否则插入时后面的值会被前面移来的值覆盖的本回答被网友采纳
//**************************************
for(int i=n-1;i>=m;i--)
{
a[i]=a[i-1];
}
a[m-1]=XX;
//**************************************
主要思想是:将数组a中m位置以后的元素整体先后移动一个位置,然后将待插入的元素赋值给
a[m-1]即可。
注意:至少被插入的数组最后一个空间是空值,否则插入时后面的值会被前面移来的值覆盖的本回答被网友采纳