合并两个有序的数组,使得合并后的结果也是有序

2021-05-29 19:13

阅读:536

标签:tar   个数   返回   ++   填充   out   public   合并   数据拷贝   

引言

将两个已经排好序的数组进行合并,使得合并后的数组也是有序
示例:

        int a[] = {1, 3, 5, 11, 20};
        int b[] = {1, 2, 3, 4, 7, 8, 11, 25, 30};

排好序的结果

1  1  2  3  3  4  5  7  8  11  11  20  25  30  

代码

public class MergeArray {
    public static int[] mergeSortedArrays(int a[], int b[]) {
        //如果其中一个长度为0,直接返回另外一个数组
        if (a.length == 0) {
            return Arrays.copyOf(b, b.length);
        }
        if (b.length == 0) {
            return Arrays.copyOf(a, a.length);
        }
        //合并后的结果
        int[] c = new int[a.length + b.length];
        //i:a[]的索引位置
        //j:b[]的索引位置
        //k:c[]的索引位置
        int i = 0, j = 0, k = 0;
        while (true) {
            //如果c已经被填充满了,则已经排好充了,直接退出循环返回即可
            if (k == c.length) {
                break;
            }
            //当其中一个数组已经被扫描完了,直接将另外一个数组当前位置上的数据拷贝到c上
            if (i == a.length) {
                c[k++] = b[j++];
                continue;
            }
            //当其中一个数组已经被扫描完了,直接将另外一个数组当前位置上的数据拷贝到c上
            if (j == b.length) {
                c[k++] = a[i++];
                continue;
            }
            //将小的那一个拷贝到c当前位置上
            if (a[i] 

合并两个有序的数组,使得合并后的结果也是有序

标签:tar   个数   返回   ++   填充   out   public   合并   数据拷贝   

原文地址:https://www.cnblogs.com/yanchuanbin/p/14764581.html

上一篇:Java——代码块

下一篇:java-08- 接口


评论


亲,登录后才可以留言!