JAVA 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

2024年11月27日 17:37
有3个网友回答
网友(1):

/**
被你的提问牵着走了,其实这个问题很简单,反正是在已排好序中插入一个数,
那就先新建一个数组,把原来的数组中的数据全复制过去,一并将要插入的数也放进去(放在开始或结尾都行),然后重新排序就行了脊李族,原来我还想先找出插入点扰腊,再作处理,其实从效率上说,感觉差不多,所以就有如下设计:
*/

///: 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+"]后数据: ");
print(i);
}
/**遍历并打印出数组中的数据*/
private static void print(int[] a){
for(int i=0; i System.out.print(a[i]+", ");
System.out.println();//换行
}
/**插入数据并重新排序的方法*/
private static int[] insert(int[] a,int in){
int[] copy = new int[a.length+1];//新建一个临时数组,长度比原数要大1
copy[0]=in;//先将要插入的数据放入第一单元格
//原来数组中的数复制过来,存在第二格为樱弊开始的单元格中
for(int i=0; i copy[i+1]=a[i];
//对临时数组重新排序
for(int i=0; i //如果前一数据大于后一数据,就进行交换.
if(copy[i]>copy[i+1]){
copy[i]+=copy[i+1];
copy[i+1]=copy[i]-copy[i+1];
copy[i]-=copy[i+1];
i-=i==0?1:2;//逐级上溯
}
//返回临时数组,任务完成
return copy;
}
}
///:~END

网友(2):

首先 告诉你在“数组”中插入数据的可能行为“0”,看看数据结构就知道怎么回事态闭了。唯一的可能性就是找到那个数相者闭渣应的位置然后重新首悄建立数组将数据插入到新的数组。

网友(3):

0079007用的是动态数组,如果你只需要输入神郑一个数的话可以用一般的数组:

// Sort.java:
public class Sort
{
public static void main(String args[])
{
int one[]; // 你已经排好序的数组
int two[] = new int[one.length+1]; // 新的数岩搏组,维游枣颂数比one多一
System.arraycopy(one, 0, one.length, two, 0); // 复制数组one到two,起始位置为0
two[two.length-1] = 1000; // 输入一个数,放在two的最后。
paixu(two); // 用你的排序算法给新数组two排序。
}
}