算法--两个有序数组合并
2017-03-11 22:00
316 查看
两个有序数组合并
关键点:从后往前进行比较,这样保证数组A有用的部分不会因为在合并的过程中覆盖掉
第15节 有序数组合并练习题
有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B。请编写一个方法,将B合并入A并排序。给定两个有序int数组A和B,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组。
Java (javac 1.7)
代码自动补全
1
import java.util.*;
2
3
public class Merge {
4
public int[] mergeAB(int[] A, int[] B, int n, int m) {
5
//标记A数组和B数组遍历位置的下标
6
int indexA = n - 1;
7
int indexB = m - 1;
8
9
//遍历时标记元素放的位置
10
int index = n - 1 + m;
11
/**
12
* 每一轮遍历,比较的是此时数组A和数组B对应索引所指的元素,挑出最大的放到A数组最后index的位置
13
*/
14
while(indexA >= 0 && indexB >= 0){
15
if(A[indexA] > B[indexB]){
16
A[index] = A[indexA];
17
indexA--;
18
}
19
else{
20
A[index] = B[indexB];
21
indexB--;
22
}
23
index--;
24
}
25
/**
26
* 查看B数组中的元素是否遍历完成,没有遍历完成此时遍历剩余的元素到A中
27
*
28
*A: 4 5 7 10
29
*B:1 2
30
*/
31
while(indexB>=0){
32
A[indexB] = B[indexB];
33
indexB--;
34
}
35
return A;
36
}
37
}
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
运行
相关文章推荐
- 算法--合并两个有序数组
- 【合并两个有序的子数组】算法实现
- 算法面试题——两个有序数组,将一个数组放入另一个空间很大的数组,要求合并之后依然有序,时间复杂度要求最小,不使用额外的数组。
- 基础算法(一) ———— 合并两个有序数组
- 两个有序数组的合并算法
- leetcode:Merge Sorted Array(合并两个有序数组到其中一个数组中)【面试算法题】
- 【简单算法】31.合并两个有序数组
- 算法:两个有序数组的合并
- 基础算法之三: 合并两个有序数组
- 算法 - 合并两个有序数组为一个有序数组
- 算法 - 两个有序数组合并成一个有序数组
- 算法 - 合并两个有序数组成一个有序数组
- [算法 笔记]合并有序的两个数组
- 数据结构与算法[LeetCode]—两个有序数组合并及找中点问题
- 两个有序数组合并,并去重复
- 算法题 -- 合并两个大小为n的已排序数组
- 两个有序数组合并为一个有序数组
- 两个有序数组合并为一个有序数组
- 两个有序数组合并为一个有序数组
- 15、合并两个有序数组,不另外开辟空间 JAVA