题目:
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
刚开始根据归并排序写的多了一个中间数组
void MergeSortArr(int arrA[],int lA,int arrB[],int lB){
int *trr = new int[lA+lB];
int i = 0;
int j = 0;
int k = 0;
while(i < lA && j < lB)
{
if(arrA[i] <= arrB[j])
trr[k++] = arrA[i++];
else
trr[k++] = arrB[j++];
}
while(i < lA)
trr[k++] = arrA[i++];
while(j < lB)
trr[k++] = arrB[j++];
for(i = 0;i<k;++i)
{
arrA[i] = trr[i];
}
delete[] trr;
}
参考别人的写的版本从A的后面开始排序
void MergeSortArr1(int arrA[],int lA,int arrB[],int lB){
int *trr = new int[lA+lB];
int i = lA- 1;
int j = lB- 1;
int k = lA + lB - 1;
while (i >= 0 && j >= 0)
{
if(arrA[i] >= arrB[j])
arrA[k--] = arrA[i--];
else
arrA[k--] = arrB[j--];
}
while(i >= 0)
arrA[k--] = arrA[i--];
while(j >= 0)
arrA[k--] = arrB[j--];
}