21xrx.com
2024-03-29 08:13:24 Friday
登录
文章检索 我的文章 写文章
C程序合并两个数组
2021-07-07 07:18:15 深夜i     --     --
C

C 程序将两个数组合并到另一个数组中。 假定它们按升序排序。 用户输入它们; 该程序将它们组合起来以获得更大的数组。 如果它们不是按升序排列的,我们可以对它们进行排序,然后使用合并功能。 另一种方法是先合并它们,然后对其进行排序。 与对大型数组进行排序相比,首先对它们进行排序花费的时间更少。 合并两个排序列表用于合并排序算法。

 

合并两个排序数组的C程序

// It is assumed a user will enter arrays in ascending order
#include <stdio.h>


void merge(int [], int, int [], int, int []);

int main() {
  int a[100], b[100], m, n, c, sorted[200];

  printf("Input number of elements in first array\n");
  scanf("%d", &m);

  printf("Input %d integers\n", m);
  for (c = 0; c < m; c++) {
    scanf("%d", &a[c]);
  }

  printf("Input number of elements in second array\n");
  scanf("%d", &n);

  printf("Input %d integers\n", n);
  for (c = 0; c < n; c++) {
    scanf("%d", &b[c]);
  }

  merge(a, m, b, n, sorted);

  printf("Sorted array:\n");

  for (c = 0; c < m + n; c++) {
    printf("%d\n", sorted[c]);
  }

  return 0;
}

void merge(int a[], int m, int b[], int n, int sorted[]) {
  int i, j, k;

  j = k = 0;

  for (i = 0; i < m + n;) {
    if (j < m && k < n) {
      if (a[j] < b[k]) {
        sorted[i] = a[j];
        j++;
      }
      else {
        sorted[i] = b[k];
        k++;
      }
      i++;
    }
    else if (j == m) {
      for (; i < m + n;) {
        sorted[i] = b[k];
        k++;
        i++;
      }
    }
    else {
      for (; i < m + n;) {
        sorted[i] = a[j];
        j++;
        i++;
      }
    }
  }
}

下载合并数组程序。

合并两个数组 C 程序输出:

  
  
下一篇: C中的冒泡排序

评论区

{{item['qq_nickname']}}
()
回复
回复