题1:给定两个排序后的数组A和B, 其中A的末端有足够的缓冲空间容纳B, 编写一个方法, 将B合并入A并排序
解题思路: 定义指针a和指针b,如果a>=b,a元素等于current元素,指针a左移一位,指标current左移一位,直到a指针或者b指针小于0, 这里考虑到如果数组B整体小于数组A,可能指针a走出了边界,指针b左边的元素全部挪过去,如果是指针b先出了边界,指针a左边的元素不需挪动,因为整体已经有序了,自己可以图画试试
代码如下
static void mergeSort(int[] A, int[] B) {
// 待插入元素的位置
int current = A.length - 1;
// 数组a待比较元素下标
int a = A.length - B.length - 1;
// 数组b待比较元素下标
int b = B.length - 1;
while (a >= 0 && b >= 0) {
if (A[a] >= B[b]) {
A[current] = A[a];
a--;
current--;
}
else {
A[current