5, 编写代码实现将两个已按照升序排好的两个数组a和b中的顺序排列到c中去.

c语言

第1个回答  2019-04-12
#include <stdio.h>
#include <stdlib.h>
//an为数组a的长度,bn为数组b的长度
void fun(int *a, int *b, int an, int bn);
int main()
{
    int a[10] = {11, 21, 31, 41, 51, 61, 71, 81, 91, 110};
    int b[5] = {1, 7, 88, 89, 342};
    fun(a, b, 10, 5);
    return 0;
}
void fun(int *a, int *b, int an, int bn)
{
    int *c = (int *)malloc(sizeof(int) * (an + bn));
    int i = 0, j = 0, z = 0;
    while (z != (an + bn))
    {
        if (i < an && j < bn)
        {
            if (a[i] < b[j])
                c[z++] = a[i++];
            else
                c[z++] = b[j++];
        }
        else
        {
            if (i == an && j < bn)
                c[z++] = b[j++];
            if (j == bn && i < an)
                c[z++] = a[i++];
        }
    }
    for (i = 0; i < z; i++)
        printf("%d,", c[i]);
}

本回答被网友采纳
第2个回答  2019-04-11
你可以参考 merge sort的做法。
当然如果你想简单,你可以直接把a 拷贝到c,然后接着把 b 拷贝到 c,这样c就包含了全部的a和b,再对c进行排序就可以了。
相似回答