黑马程序员技术交流社区

标题: 有两个数组a b (无序的),如何把它合并成一个数组,然后... [打印本页]

作者: 。子伤。    时间: 2013-5-13 22:22
标题: 有两个数组a b (无序的),如何把它合并成一个数组,然后...
有两个数组a b (无序的),如何把它合并成一个数组,然后再按有序输出?

作者: SOAR    时间: 2013-5-13 22:33
给你个思路吧。
设A为其中一个数组,B为另一个数组,C为合并后的数组。可设两个循环变量i和j分别指向A和B中某个元素,若设i当前所指的元素为a,j所指的元素为b,则当前应插入到C中的元素为
if(a< b || a==b)
    //插入a
else
   //插入b


作者: 傻瓜一点红    时间: 2013-5-13 22:37
可以重新创建一个数组,长度等于两个数组长度之和,然后将两人数组的值复制到这个数组中,然后进行排序就可以了
作者: long    时间: 2013-5-13 23:29
  1. import java.util.Arrays;

  2. public class Merge{
  3.         public static void main(String[] a){
  4.                 int[] arr1 = {2, 1};
  5.                 int[] arr2 = {10, 5, 20};
  6.                 int len = arr1.length + arr2.length;//合并后新数组的长度
  7.                 int[] arr = new int[len];
  8.                
  9.                 //将第一个数组中的元素复制到新数组的相应位置
  10.                 for(int i = 0; i < arr1.length; i++)
  11.                         arr[i] = arr1[i];
  12.                
  13.                 //将第二个数组中的元素复制到新数组的相应位置
  14.                 for(int i = 0; i < arr2.length; i++)
  15.                         arr[arr1.length + i] = arr2[i];
  16.                
  17.                 Arrays.sort(arr);//调用工具类的sort方法给数组arr排序
  18.                 //输出排序后的数组元素
  19.                 for(int i = 0; i < arr.length; i++)
  20.                         System.out.println(arr[i]);
  21.         }
  22. }
复制代码

作者: 刘茂林    时间: 2013-5-13 23:31
尹桥印 发表于 2013-5-13 22:24
思路给你:
利用lengh分别获取两个数组的长度然后相加和为X。
定义一个数组变量Y,长度为X。

话说 定义数组要知道空间的大小 像你这样 貌似就变成动态数组了把
作者: chouwayメ    时间: 2013-5-13 23:45
本帖最后由 chouwayメ 于 2013-10-8 22:50 编辑

多码码代码,练练手。。。{:soso_e129:}
  1. import java.util.*;

  2. public class DataTest
  3. {
  4.    public static void main(String[]args)
  5.    {
  6.            int[]a={3,2,5,7,9,8};
  7.            int[]b={1,2,5,7,6,4};
  8.            int[]c=new int[a.length+b.length];// 创建准备正好装a、b的数组
  9.            for(int i=0;i<c.length;i++)
  10.            {
  11.                    if(i<a.length)
  12.                          c[i]=a[i];                       //前面0---(a.length-1)  复制a数组
  13.                    else
  14.                         c[i]=b[i-a.length];     //后面的复制b数组的值。
  15.            }
  16.            Arrays.sort(c);                // 调用工具类的sort方法进行排序
  17.            for(int i=0;i<c.length;i++)
  18.            {
  19.                    System.out.print(c[i]);     //输出c数组
  20.            }
  21.    }
  22. }
复制代码

作者: 许智敏    时间: 2013-5-14 07:04
本帖最后由 许智敏 于 2013-5-14 07:06 编辑
  1. import java.util.ArrayList;
  2. import java.util.Collections;

  3. public class 排序 {
  4.         public static void main(String[] args) {
  5.                 int[] a = {4,3,5,6,2,0};//定义两个数组,既然是数组,一定存储基本数据类型
  6.                 int[] b = {-1,4,5,3};
  7.                 ArrayList<Integer> al = new ArrayList<Integer>();
  8.                 for(int x : a)//遍历这两个数组,并放到集合中
  9.                         al.add(x);
  10.                 for(int x : b)
  11.                         al.add(x);
  12.                 Collections.sort(al);//利用集合工具的排序
  13.                 System.out.println(al);
  14.         }
  15. }
  16. //如果最终结果想的到数组的话,直接用al.toArray();即可
复制代码

作者: 。子伤。    时间: 2013-5-14 13:05
chouwayメ 发表于 2013-5-13 23:45
多码码代码,练练手。。。

这个方法我知道,有没有别的算法
作者: chouwayメ    时间: 2013-5-14 17:50
本帖最后由 chouwayメ 于 2013-10-8 23:05 编辑
。子伤。 发表于 2013-5-14 13:05
这个方法我知道,有没有别的算法

楼上的那位写得很漂亮 :)我也学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2