如何将两个有序数组合并为一个有序数组,用函数做,一个循环搞定?

如题所述

这很简单:
代码如下(此处不考虑Object,假设为int[ ]):
public int[ ] getNewArrays(int[ ] one, int [] two){
int len=one.length;
int len2=two.length;
int len3=oneLength+twoLength; //得到两数组长度和;
int[] newArray=new int [len3]; //创建第三个数组,长度=两数组长度之和;
for(int i=0;i<len3;i++){
if(i<len){ //如果i<len,则赋值为one中的元素;
newArray[i]=one[i];
continue;
}
int t=i-len; // t 从0开始
newArray[i]=two[t]; //后面的元素 赋值为two中的元素;

} //对第三个数组一一赋值,值为前两个数组;
Arrays.sort(newArray); //对第三个数组排序;此处使用的是java自带的sort方法;
//也可使用冒泡排序,此处不演示;
return newArray;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-14
不需要用循环吧,数组有addAll()方法,直接合并。
如果考虑到新数组的排序,直接用Arrays.sort()方法就可以了。
第2个回答  2018-05-17
class test {
public static void main(String[] args) {
    int[] arr1 = new int[] { 1, 2 };
    int[] arr2 = new int[] { 5, 3, 4 };
    int[] newArr = getNew(arr1, arr2);
    printArr(newArr);
}

static int[] getNew(int[] arr1, int[] arr2) {
    int len1 = arr1.length;
    int len2 = arr2.length;
    int len = arr1.length + arr2.length;
    int[] newArr = new int[len];

    int x = 0;
    for(int i=0;i<newArr.length;i++) {
        if(i<len1) {
            newArr[i] = arr1[i];
        } else {
            newArr[i] = arr2[i - len1];
        }
    }
    return newArr;
}

static void printArr(int[] arr) {
    String str = "[";
    for (int i = 0; i < arr.length; i++) {
        int ele = arr[i];
        str += ele;
        if (i != arr.length - 1) {
        str += ",";
        }
    }
    str += "]";
    System.out.println(str);
    }

}

第3个回答  2018-03-21
将两个数组的元素传到一个数组内
首先定义两个数组 假设数组长度都为5 当然可以自己定义长度根据实际要求来
public class Test{
public static void main (String [] args){
int [] arr1= new int [5];
int [] arr2= new int [5];
//此处调用方法 进行赋值调用
int [] newarr=getArray(arr1,arr2);//就可以得到新的数组了
}
//此处定义一个方法 把两个数组合并到一个新数组中去
public static int [] getArray(int [] arr1,int [] arr2 ){
//下面定义一个新的数组newarr用来接收arr1,arr2数组的数据新数组的长度是原来两个数组长度之和,即arr1.length+arr2.length
int [] newarr= new int [arr1.length+arr2.length];
//然后进行数组的传递 先把arr1的元素传递给新数组 再把arr2的元素传递给新数组(newarr)
for(int i = 0;i<arr1.length;i++){
newarr[i]=arr1[i];
}
//此处把arr2的元素传递给新数组(newarr)
for(int i= 0;i<arr2.length;i++){
newarr[i+arr1.length]= arr2[i];//此处赋值的是arr1.length 以后的元素 因为newarr的数组长度是arr1.length+arr2.length;
}
return newarr;
}
}
第4个回答  2012-10-15
广州疯狂JAVA课程 视频课程 疯狂JAVA书籍网络畅销第一 的
相似回答