码迷,mamicode.com
首页 > 其他好文 > 详细

两个有序数列的合并

时间:2014-08-18 12:11:24      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   数据   for   ar   问题   

问题:a[]、b[]分别为有序排列的一个数组。现在要将a[]、b[]合并为c[]。例如:a[] = {1,3,4,7,10,15}; b[] = {2,5,8,20},我们需要得到的c[] = {1,2,3,4,5,7,8,10,15,20}.

解决思路:1)先比较a[0]和b[0],如果a[0]相对较小,将a[0]的值赋值给c[0],然后比较a[1]和b[0]。2)当其中一个数组里的值已经全部赋值给了c[],那么直接将另外一个数组剩下的元素一次性赋予给c[]。

下面用java实现。

public class Test {

    public static void main(String[] args) {
        int[] a = {10,20,50,70,80,500,1001};
        int[] b = {10,40,60,90,100,120,200};
        
        int aLength = a.length;
        int bLength = b.length;
        
        int[] c = new int[aLength + bLength];
        
        int aIndex = 0;
        int bIndex = 0;
        
        for(int i = 0; i < aLength + bLength; i++) {
            if(a[aIndex] <= b[bIndex]) {
                c[i] = a[aIndex];
                if(aIndex < aLength - 1 ) {
                    aIndex++;
                }
                //当数组a的数据已经全部读取完毕时
                else {
                    for(int t = i + 1; t < aLength + bLength; t++) {
                        c[t] = b[bIndex];
                        bIndex++;
                    }
                    break;
                }
            }
            else {
                c[i] = b[bIndex];
                if(bIndex < bLength - 1 ) {
                    bIndex++;
                }
                //当数组b的数据已经全部读取完毕时
                else {
                    for(int t = i + 1; t < aLength + bLength; t++) {
                        c[t] = a[aIndex];
                        aIndex++;
                    }
                    break;
                }
            }
        }
        for(int i = 0;i < aLength + bLength; i++) {
            System.out.println(c[i]);
        }
    }
}

 

两个有序数列的合并,布布扣,bubuko.com

两个有序数列的合并

标签:style   blog   color   java   数据   for   ar   问题   

原文地址:http://www.cnblogs.com/hushunfeng/p/3918947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!