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

我是初学者,用普通的方法哦,不要直接调用什么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 + " ");
}
}

}

温馨提示:内容为网友见解,仅供参考
第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]即可。
注意:至少被插入的数组最后一个空间是空值,否则插入时后面的值会被前面移来的值覆盖的本回答被网友采纳

JAVA 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入...
\/\/\/: Filename: Insert.java public class Insert { public static void main(String[] args) { int[] i = {5,6,7,44,55,89,};\/\/原来的数组 int x = 24;\/\/要插入的数据 System.out.print("插入前数据: ");print(i);i=insert(i,x);System.out.print("插入["+x+"]后数据: ...

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中...
import java.util.Scanner;public class Prog30{ public static void main(String[] args){ int[] A = new int[]{0,8,7,5,9,1,2,4,3,12};int[] B = sort(A);print(B);System.out.println();System.out.print(" 请输入 10 个数的数组: ");Scanner scan = new Scanner(System...

JAVA一个已经排好序的数组(元素为10个),插入一个数按照原来的排序?
1、数组插入新数据,首先需要扩容,java中数组需要使用数组的扩容方式:arr = Arrays.copyOf(arr, arr.length+1);或者,\/\/已有 int [] num ;num = new int[num.length+1];重新定义数组,之后按顺序遍历插入,或者插入以后再排序也是可以的。

...一个数后,按原来排序的规律将它插入数组中。数组就
本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。 后移结束跳出外循环。插入点为i,把n赋予a[i...

java编写程序,向整数数组的指定位置插入元素,并输出插入前后数组的值...
} newarr[index]=value;System.out.println("插入后的数组:");for (int i = 0; i < newarr.length; i++) { if(newarr[i]!=0){ System.out.print(newarr[i]+"\\t");} } } } import java.util.*;public class TestInsertArray { \/ param args \/ public static void main(...

java数组中插入数字
if(x<=s[i]&&x>s[i+1]){ \/\/x是你要插入的数字,s[]是现有的数组 for(int j=5-i;j>0;j++){ \/\/ 如果上面的条件成立,那么重置插入位置以后的数组 s[j] = s[j-1];} s[i+1]=x; \/\/插入该数字 break; \/\/跳出循环 } } 说明:如果你学过list的用法了,那么建议...

C++:题目:“有一个已排好序的数组,今输入一个数,要求按原来排序的规律将...
int i,key,loc;int a[10]={1,3,6,9,10,15,16,22,30};for(i=0;i<9;i++){ printf("%d",a);} \/*寻找插入位置*\/ printf("\\n\\nPlease intput key:");scanf("%d",&key);loc=0;for(i=0;i<9;i++){ if(a>=key)break;} loc=i;\/*逆序向后移动每一个元素,然后插入新...

已有一个排好序的序列,输入一个数插入到该序列中,使其仍然保持有序.
假设原序列名为a,要插入的数为b.如果数字是从小到大排列的.for(int i=n,;i>=0;i--)\/\/n为数组a的元素个数 { if(a[i]>=b){ a[i+1]=a[i];a[i]=b;} else continue;}

C语言求助,把一个数插入到一个已排好序的数组中
1、可以用下面代码把数插入一个排好序的数组,数组进行迭代取值。2、下面是数组排序的代码,这里是按大小排序的,每次取值和输入的数比较,比输入的数小,就往后移动移位,直到移出输入数该放的位置,反之也是。3、或者用下图的代码实现,有一个已排好序的数组,现在插入一个数字。4、按原来已排好的...

...输入一个数后,按原来排序的规律将它插入数组中。
C语言,有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。解:include int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100};int temp1,temp2,number,end,i,j;printf("array a:\\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\\n");pri...

相似回答