新手求助,在线等。

igelf 2008-03-26 11:21:40
现有两个从小到大排列好的整型数组a和b
int []a = {5, 7, 9, 21, 29, 79, 89};
int []b ={3, 5, 11, 25, 35, 78, 100, 110, 112};
现要对a和b进行连接产生一个新的数组c,要求c中的元素是从小到大排列的。编程实现这个连接算法。
...全文
135 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
changjiangzhibin 2008-03-26
  • 打赏
  • 举报
回复
自己的事情自己做
zapdos 2008-03-26
  • 打赏
  • 举报
回复
int[] a = { 5, 7, 9, 21, 29, 79, 89 };
int[] b = { 3, 5, 11, 25, 35, 78, 100, 110, 112 };
int[] c = new int[a.length + b.length];

for(int i=0,p=0,q=0;i<c.length;i++)
c[i] = q>=b.length||p<a.length&&a[p]<b[q]?a[p++]:b[q++];
for(int i=0;i<c.length;i++)
System.out.println(c[i]);
zapdos 2008-03-26
  • 打赏
  • 举报
回复
Zipper 拉链法?
这个不是归并排序中的东西么?
zapdos 2008-03-26
  • 打赏
  • 举报
回复
代码
List c = Arrays.asList(a);
Collections.sort(c.addAll(Arrays.asList(b)))
吴冬冬 2008-03-26
  • 打赏
  • 举报
回复
因为原数组是已排好序的 所以拉链法是最快的;
Zipper 拉链法的实现

int[] a = { 5, 7, 9, 21, 29, 79, 89 };
int[] b = { 3, 5, 11, 25, 35, 78, 100, 110, 112 };
int[] c = new int[a.length + b.length];
int bi = 0;
int ai = 0;
for (int i = 0; i < c.length; i++) {
if(ai==a.length){
c[i]=b[bi];
bi++;
continue;
}
if(bi==b.length){
c[i]=a[ai];
ai++;
continue;
}
if (a[ai] < b[bi]) {
c[i] = a[ai];
ai++;
} else {
c[i] = b[bi];
bi++;
}
}
for (int i : c) {
System.out.println(i);
}
吴冬冬 2008-03-26
  • 打赏
  • 举报
回复
因为原数组是已排好序的 所以拉链法是最快的;
Zipper 拉链法的实现

int[] a = { 5, 7, 9, 21, 29, 79, 89 };
int[] b = { 3, 5, 11, 25, 35, 78, 100, 110, 112 };
int[] c = new int[a.length + b.length];
int bi = 0;
int ai = 0;
for (int i = 0; i < c.length; i++) {
if(ai==a.length){
c[i]=b[bi];
bi++;
continue;
}
if(bi==b.length){
c[i]=a[ai];
ai++;
continue;
}
if (a[ai] < b[bi]) {
c[i] = a[ai];
ai++;
} else {
c[i] = b[bi];
bi++;
}
}
for (int i : c) {
System.out.println(i);
}
igelf 2008-03-26
  • 打赏
  • 举报
回复
我是帮别人做作业 。我不搞 java的
iskyshop 2008-03-26
  • 打赏
  • 举报
回复
这种作业性质的东西,而且又是特别基础的,建议大家给予抵制!这个代码只要稍微熟悉java语法的都轻松写出来,不要求代码了哈!!
igelf 2008-03-26
  • 打赏
  • 举报
回复
我不要算法,只要实现。
igelf 2008-03-26
  • 打赏
  • 举报
回复
贴出代码,我加分,帮帮忙,我也是帮别人
healer_kx 2008-03-26
  • 打赏
  • 举报
回复
这个题目的准确做法是Merge算法,找交集。
http://blog.csdn.net/netskychw/archive/2006/07/21/953007.aspx
看这个BLOG,里面给出了最准确的做法。
igelf 2008-03-26
  • 打赏
  • 举报
回复
哪位有贴出代码吗。我知道很简单
吴冬冬 2008-03-26
  • 打赏
  • 举报
回复
Zipper 拉链法
healer_kx 2008-03-26
  • 打赏
  • 举报
回复
用个TreeSet就都搞定了,虽然比较弱智。
iskyshop 2008-03-26
  • 打赏
  • 举报
回复
首先直接连接2个数组,连接的时候排除相同的数,然后进行一个排序,这个是最简单的实现,如果数组过于大,那么这样效率就不是很好了
hudingchen 2008-03-26
  • 打赏
  • 举报
回复
int []a = {5, 7, 9, 21, 29, 79, 89};
int []b ={3, 5, 11, 25, 35, 78, 100, 110, 112};
int []c = new int[a.length+b.length];
System.arraycopy(a, 0, c, 0, a.length);
System.arraycopy(b, 0, c, a.length, b.length);
Arrays.sort(c);

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧