当前位置:网站首页 > Go语言开发 > 正文

合并数组c语言代码(c语言合并数组的函数)



合并两个有序数组(2)

要求实现一个函数merge,将元素个数为m的升序数组a和长度为n的升序数组b合并到数组a,合并后的数组仍然按升序排列。假设数组a的长度足够大。

函数接口定义:

void printArray(int* arr, int arr_size);  /* 打印数组,细节不表 */

void merge(int* a, int m, int* b, int n); /* 合并a和b到a */

其中a和b是按升序排列的数组,m为数组a中元素的个数,n为数组b的长度;合并后的升序数组仍然存放在a中。

裁判测试程序样例:

#include <stdio.h>

#include <stdlib.h>

void printArray(int* arr, int arr_size);  /* 打印数组,细节不表 */

void merge(int* a, int m, int* b, int n); /* 合并a和b到a */

int main(int argc, char const *argv[])

{

    int m, n, i;

    int *a, *b;

    scanf("%d %d", &m, &n);

    a = (int*)malloc((m + n) * sizeof(int));

    for (i = 0; i < m; i++) {

        scanf("%d", &a[i]);

    }

    b = (int*)malloc(n * sizeof(int));

    for (i = 0; i < n; i++) {

        scanf("%d", &b[i]);

    }

    merge(a, m, b, n);

    printArray(a, m + n);

    free(a); free(b);

    return 0;

}

/* 请在这里填写答案 */

输入样例:

输入包含三行。

第一行为两个整数m和n,分别为数组a和数组b中元素的个数。

第二行为包含m个整数的有序数组a。

第三行为包含n个整数的有序数组b。

7 11

1 2 14 25 33 73 84

5 6 17 27 68 68 74 79 80 85 87

输出样例:

输出为合并后按升序排列的数组。

1 2 5 6 14 17 25 27 33 68 68 73 74 79 80 84 85 87

参考代码:

void merge(int* a, int m, int* b, int n)

{

    int x=m-1,y=n-1,z=m+n-1;

    while(x>=0&&y>=0)

        a[z--]=a[x]>b[y]?a[x--]:b[y--];

    while(y>=0)

        a[z--]=b[y--];

}



到此这篇合并数组c语言代码(c语言合并数组的函数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 单片机程序tho(单片机程序是什么语言)2025-07-27 08:00:07
  • windows驱动开发书籍(win10驱动开发书籍)2025-07-27 08:00:07
  • vscode配置(vscode配置gcc开发环境)2025-07-27 08:00:07
  • Bsp驱动开发培训(bsp驱动开发工程师)2025-07-27 08:00:07
  • 苹果开发者企业账号有什么用(苹果企业版开发者账号价格)2025-07-27 08:00:07
  • console是什么意思csgo(console是什么意思啊)2025-07-27 08:00:07
  • 苹果开发者账号注册流程(苹果开发者账号注册流程2023)2025-07-27 08:00:07
  • csgo远程主机断开连接是什么意思(csgo远程服务器断开连接)2025-07-27 08:00:07
  • 嵌入式驱动开发(嵌入式驱动开发前景如何)2025-07-27 08:00:07
  • 苹果开发者账号年费(苹果开发者账号年费怎么退)2025-07-27 08:00:07
  • 全屏图片