package com.rao.algorithm; import java.util.Arrays; /** * @author Srao * @className MergeK * @date 2019/12/20 23:24 * @package com.rao.algorithm * @Description 合并K个有序数组 */ public class MergeK { public static int[] merge(int[] arr1, int[] arr2){ int length1 = arr1.length; int length2 = arr2.length; int[] arr = new int[length1 + length2]; int j = 0; int k = 0; int i = 0; while (j < length1 && k < length2){ if (arr1[j] <= arr2[k]){ arr[i] = arr1[j]; i++; j++; }else { arr[i] = arr2[k]; i++; k++; } } //把还没有进行合并的元素直接添加到新数组的后面 while (j < length1){ arr[i] = arr1[j]; i++; j++; } while (k < length2){ arr[i] = arr2[k]; i++; k++; } return arr; } public static void main(String[] args) { int[] arr1 = {1,3,5,6}; int[] arr2 = {1,2,5,7}; int[] arr3 = {3,6,9,11}; int[] arr4 = {5,7,13,17}; int[] merge1 = merge(arr1, arr2); int[] merge2 = merge(arr3, arr4); int[] merge = merge(merge1, merge2); System.out.println(Arrays.toString(merge)); } }
和归并排序的思想差不多,归并排序也用到了合并有序数组