合并两个递增的数组,合并后的数组也递增

img


他这个一个是到m减2,一个是到n减二。 最后的结果k一直到m+n-2 就感觉很绕,写出来的程序报错。

供参考:

#include<stdio.h>
int main()
{
    int a[8] = { 1,7,9,11,13,15,17,19 }, b[5] = { 2,4,6,8,10 }, c[13];
    int *pa = a, * pb=b, * pc=c;
    while (pa < a + 8 && pb < b + 5)
    {
        if (*pa <= *pb){
            *pc++ = *pa++;
        }
        else{
            *pc++ = *pb++;
        }
    }
    while (pa < a + 8) *pc++ = *pa++;
    while (pb < b + 5) *pc++ = *pb++;
    for (int i = 0; i < 13; i++)
            printf("%d,", c[i]);
    return 0;
}
 

它的意思是说 两个从小到大排好序的数组A B 如何排序成为一个从小到大排的数组C
A有m-1个元素 B有m-1个元素 相加刚好哦为m+n-2 个元素
意思就是如果有元素重复 不需要覆盖
会了吗