更新时间:2022-07-08 11:54:02 来源:极悦 浏览1258次
java两个数组合并排序是什么?极悦小编给大家举例说明。
给定两个大小为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指向第二个数组。
使用指针同时遍历两个数组,并在两个数组中选择最小的元素并插入到辅助数组中。
增加指针。
遍历后,返回合并后的数组。
公共静态无效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合并两个排序数组”的介绍,大家如果对此比较感兴趣,想了解更多相关知识,可以关注一下极悦的Java极悦在线学习,里面的课程内容细致全面,很适合没有基础的小白学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习