BlogJava 联系 聚合 管理  

Blog Stats

News

 

蓝冰飞寒个人独立博客地址,www.uphenan.com

随笔档案

文章档案


蓝冰飞寒

用心去做每一件事情

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

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

///: 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; iSystem.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; icopy[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
Tags -
posted on 2009-04-22 20:33 蓝冰飞寒 阅读(48) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: