/**
被你的提问牵着走了,其实这个问题很简单,那就先新建一个数组,把原来的数组中的数据全复制过去,一并将要插入的数也放进去(放在开始或结尾都行),然后重新排序就行了,原来我还想先找出插入点,再作处理,其实从效率上说,感觉差不多,所以就有如下设计:
*/
///: 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.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
//对临时数组重新排序
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
import java.util.Arrays;
public class SortTest {
public static void main(String[] args) {
int[] oldArr= {1,5,8,6,4,8,7,2,5};//你输入的
Arrays.sort(oldArr);//排序
int x=5;//你输入的需要找的数字
int [] newArr=new int[10];//重新搞一个数组
boolean flag=false;//状态,是否找到了您输入的那个数
for(int i=0;i
if(!flag){//如果找到并且是第一次
newArr[i]=0;//将当前数组位置上的数改成0
}
flag=true;
}
if(flag){//如果有您输入的那个数字
newArr[i+1]=oldArr[i];//后移
}else{
newArr[i]=oldArr[i];//否则保持不变
}
}
for (int i = 0; i < newArr.length; i++) {
System.out.println(newArr[i]);//打印
}
}
}