专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java合并两个排序数组

Java合并两个排序数组

更新时间:2022-07-08 11:54:02 来源:赢咖4 浏览1159次

java两个数组合并排序是什么?赢咖4小编给大家举例说明。

问题陈述

给定两个大小为N和M的数组排序A[]和B[]。任务是以非递减顺序将两个数组合并为一个数组。

例子:

输入: A[] =[3, 9, 10, 18, 23], B[] = [5, 12, 15, 20, 21, 25]

输出: [3, 5, 9, 10, 12, 15, 18, 20, 21, 23, 25]

解释:合并后的数组按排序顺序包含两个数组中的所有元素。

输入: A[] = [1, 5], B[] = [4, 6, 7]

输出: [1, 4, 5, 6, 7]

插入和排序方法

最幼稚的方法是简单地将一个数组的元素合并到另一个数组中并对结果数组进行排序。

公共无效合并(int [] nums1,int m,int [] nums2,int n){
        for (int i = 0; i < n; i++) {
            nums1[i + m] = nums2[i];
        }
        Arrays.sort(nums1);
    }

合并排序方法

这里要注意的关键思想是两个数组都是排序的。因此,利用这一事实,我们可以应用类似于归并排序技术的方法。

创建一个大小为 N + M 的辅助数组,并在此数组中插入合并元素。

让我们通过一个例子来理解这种方法:

算法

创建一个大小为N + M的辅助数组。

放入两个指针i和j并将它们初始化为 0。

指针 i指向第一个数组,而指针 j指向第二个数组。

使用指针同时遍历两个数组,并在两个数组中选择最小的元素并插入到辅助数组中。

增加指针。

遍历后,返回合并后的数组。

Java 实现

公共静态无效mergeArrays(int [] arr1,int [] arr2,int n1,
  int n2,int [] arr3){ 
  int i = 0,j = 0,k = 0;
  while (i < n1 && j < n2) { 
    if (arr1[i] < arr2[j]) 
      arr3[k++] = arr1[i++]; 
    否则
      arr3[k++] = arr2[j++]; 
  }
  而 (i < n1) 
    arr3[k++] = arr1[i++];  
  而 (j < n2) 
    arr3[k++] = arr2[j++]; 
}

以上就是关于“Java合并两个排序数组”的介绍,大家如果对此比较感兴趣,想了解更多相关知识,可以关注一下赢咖4的Java赢咖4在线学习,里面的课程内容细致全面,很适合没有基础的小白学习,希望对大家能够有所帮助哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>