java合并两个有序数组

2018-01-22  本文已影响0人  zhouzhuo933
/**
 * Created by zhouzhuo on 2018/1/22.
 * 题目:有两个有序数组a,b,现需要将其合并成一个新的有序数组
 *
 *
 * 简单的思路就是先放到一个新的数组中,在排序。但是这样没有体现任何算法,这里考的不是快速排序等排序算法。关键是如何利用有序
 * 这个已知条件。可以这样想,假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段
 * 就可以直接拿来放到新数组中去了*/

public class SortTwoArray {
    public int[] sort(int[] a,int[] b){
        int[] c = new int[a.length+b.length];
        int i=0,j=0,k = 0;
        while (i<a.length&&j<b.length){
            if(a[i]>=b[j]){
                c[k++] = b[j++];
            }else {
                c[k++] = a[i++];
            }
        }
     
        while (j<b.length){
            c[k++] = b[j++];
        }
        while (i<a.length){
            c[k++] = a[i++];
        }
        return c;

    }

}

上一篇 下一篇

猜你喜欢

热点阅读