前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[算法] - 合并N个有序数组

[算法] - 合并N个有序数组

作者头像
夹胡碰
发布2021-03-23 21:02:31
1.3K0
发布2021-03-23 21:02:31
举报
文章被收录于专栏:程序猿~程序猿~

1. 代码

代码语言:javascript
复制
package com.jfp;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * @author jiafupeng
 * @desc
 * @create 2021/3/17 16:59
 * @update 2021/3/17 16:59
 **/
public class Test4 {

    public static int[] merge(int[] arr1, int[] arr2) {
        int m = 0;
        int n = 0;
        int[] mergeArr = new int[arr1.length + arr2.length];

        int i = 0;
        while (m < arr1.length || n < arr2.length) {
            if(m >= arr1.length){
                mergeArr[i++] = arr2[n++];
            } else if(n >= arr2.length){
                mergeArr[i++] = arr1[m++];
            } else if(arr1[m] < arr2[n]){
                mergeArr[i++] = arr1[m++];
            } else {
                mergeArr[i++] = arr2[n++];
            }
        }

        return mergeArr;
    }

    public static int[] mergeAll(ArrayList<int[]> lists, int l, int r){
        if(l >= r){
            return lists.get(l);
        }

        int m = (l + r) /2;
        int[] left = mergeAll(lists, l, m);
        int[] right = mergeAll(lists, m+1, r);
        return merge(left, right);
    }

    public static void main(String[] args) {
        int[] arr1 = {2,3,5,20};
        int[] arr2 = {2,4,6,8,10,12};
        int[] arr3 = {1,9,11};
        ArrayList<int[]> list = new ArrayList<>();
        list.add(arr1);
        list.add(arr2);
        list.add(arr3);
        int[] merge = mergeAll(list, 0, list.size() -1);
        System.out.println(Arrays.toString(merge));
    }
}

2. 输出

代码语言:javascript
复制
[1, 2, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 20]
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 代码
  • 2. 输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com