BM87 合并两个有序的数组
根据题意得出一些条件如下图所示
使用pos1和pos2两个指针分别指向A数组与B数组的末尾元素,比较其大小。将较大的值放在tail指向的地址上。
代码如下:
void merge(int* A, int ALen, int m, int* B, int BLen, int n) {
int pos1 = m-1;
int pos2 = n-1;
int tail = m+n-1;
while(pos1 >= 0 && pos2 >= 0)
{
//比较A数组和B数组的末尾元素,较大值放在A数组的tail指向的地址
A[tail--] = A[pos1] > B[pos2] ? A[pos1--] : B[pos2--];
}
//若pos2<0,pos1>0时,说明数组已经排好序了
while(pos2 >= 0)
{
A[tail--] = B[pos2--];
}
}
————————————————
版权声明:本文为CSDN博主「colorful-卡勒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/colortztzztzt/article/details/127562113