使用Java实现两个升序数组合并为一个升序数组

    问题描述:现有两个升序的整数数组,设计算法实现两个升序整数数组的合并。要求合并完成的数组为升序。

    要求:预定义数组为升序

    补充:这里考虑到最后的结果数组可能出现数组元素重复,合并后元素重复的问题,采用了ArrayList进行存储。

package com.ex;


import java.util.ArrayList;
import java.util.List;


public class Test {
	public static void main(String[] args) {
		int[] a = {2,5,7,8}; 
		int[] b = {4,6,66,77,89};
		List<Integer> c = mergeArray(a, b);
		System.out.println(c.toString());
	}
	
        //归并有序数组
	public static List<Integer> mergeArray(int [] a,int [] b){
        //归并后数组
	List<Integer> list = new ArrayList<Integer>();
	//待归并数组索引
        int i = 0,j = 0;
		
        //遍历两个数组,寻找最小值元素进行归并
	while (i < a.length && j < b.length) {
        //分情况判断 -- 选定最小值后放入归并数组 当前数组索引前移
	    if (a[i] < b[j]) {
                list.add(a[i++]);
            } else if (a[i] > b[j]){
       	        list.add(b[j++]);
       	    } else {
               //若比较的数组元素相同 归并后两数组索引均前移
                list.add(b[j++]);
                i++;
	    }
	}
		
        //补充其他元素进入归并数组 经过上述最小值归并 循环结束后必定有一数组已经完全归并结束
	while (i < a.length) {
            list.add(a[i++]);
	}
		
        while (j < b.length) {
	    list.add(b[j++]);
	}
	return list;
	}
}

猜你喜欢

转载自blog.csdn.net/Nerver_77/article/details/80922004
今日推荐