题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
和归并算法的merge函数一个原理
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int[] help = new int[m+n]; //建立额外数组help,排好序后赋值给A
int i = 0, j = 0, k = 0;
//第一个while,将较小数优先加入help
while (i<m && j<n) {
if (A[i] < B[j]) {
help[k] = A[i];
i++;
k++;
}
else {
help[k] = B[j];
j++;
k++;
}
}
//后面2个循环,确保A、B全部输入help
while (i<m) {
help[k] = A[i];
i++;
k++;
}
while (j<n) {
help[k] = B[j];
j++;
k++;
}
//help数据回送A
for (int x = 0; x<m+n; x++) {
A[x] = help[x];
}
}
}