合并数组算法如何实现?

wingofsea 2005-06-14 10:48:25
当前有N个数组存放时间数据,N个数组存放当前时刻值,各数组长度不尽相同,但第i个存放时间的数组跟第i个存放值的数组的长度是一致的,如何合并这N个存放时间的数组,并且去掉重复时间点,对应的N个存放值的数组也合并成一个,重复时间点上,取对应值的最大值,最后得到没有时间重复的一个时间数组,和组合更新过的一个存放值的数组。
例如:
目前:
time1[] = {1,2,3,5}
value1[] ={10,20,30,20}

time2[] = {2,4,5}
value2[] ={15,30,15};
则合并后的结果为
time[] = {1,2,3,4,5}
value[] = {10,20,30,30,20}
谢谢各位,N最多为8个。
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
goduck 2005-06-22
  • 打赏
  • 举报
回复
看看System.arraycopy ...
xfv0k 2005-06-22
  • 打赏
  • 举报
回复
关注
helpall 2005-06-15
  • 打赏
  • 举报
回复
Map m = new TreeMap();
for(int k=0; k < 8; k++ ) {
for(int i = 0; i < time[k].length; ++i) {
String cur = (String)m.get(time[k][i]);
try{
if(cur != null && Integer.parseInt(cur) > value[k][i])
continue;
}catch(Exception e){e......}
m.put(time[k][i],""+value[k][i]);
}
}
genepoet 2005-06-15
  • 打赏
  • 举报
回复
定义一个新的数组time[]、value[]
先把time1,value1数组复制到time和value数组
然后依次考虑timek (2<=k<=N)数组,如下:
for (i=0;i<timek.length();i++)
如果timek[i]在time[]中已经存在,其序列为j,比较valuek[i]与value[j]的大小,更新value[j]
如果不存在,则将timek[i]插入到time[]中,将valuek[i]插入到value中

循环结束时,所有的数组都插入到time[]和value[]中,完成合并
cathy97 2005-06-15
  • 打赏
  • 举报
回复
学习中

62,614

社区成员

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

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