21xrx.com
2024-11-05 22:39:55 Tuesday
登录
文章检索 我的文章 写文章
C++实现有序合并并输出数组
2023-07-07 11:43:13 深夜i     --     --
C++ 有序合并 输出数组

在日常开发中,合并两个有序数组并使之保持有序是一项相当普遍的任务。本文将介绍如何使用C++实现有序合并并输出数组。

首先,我们需要先了解一下如何合并两个有序数组。假设我们有两个有序数组A和B,它们的长度分别为n和m。我们可以定义两个指针i和j,分别指向两个数组的开头。然后,我们比较A[i]和B[j]的大小,将较小的元素放入新的数组C中,并递增对应的指针。重复这个过程直到其中一个数组的所有元素都被处理完毕,然后将另一个数组的剩余元素依次放入C中即可。最终得到的数组C即为合并后的有序数组。

下面是C++的代码实现:


#include<iostream>

using namespace std;

void merge(int arr1[], int n, int arr2[], int m, int res[])

{

  int i = 0, j = 0, k = 0;

  while (i < n && j < m) {

    if (arr1[i] <= arr2[j])

      res[k++] = arr1[i++];

    else

      res[k++] = arr2[j++];

  }

  while (i < n)

    res[k++] = arr1[i++];

  while (j < m)

    res[k++] = arr2[j++];

}

int main()

{

  int arr1[] = 3;

  int arr2[] = 2;

  int n = sizeof(arr1) / sizeof(arr1[0]);

  int m = sizeof(arr2) / sizeof(arr2[0]);

  int res[n + m];

  merge(arr1, n, arr2, m, res);

  for (int i = 0; i < n + m; i++)

    cout << res[i] << " ";

  return 0;

}

上述代码实现了两个数组的有序合并,并将结果存放在res数组中。最后,利用循环输出即可。

当然,以上代码只针对两个数组进行合并,如果我们需要合并多个有序数组,可以借助于归并排序的思想。具体做法是先将数组划分成若干个长度相等的子数组,对每个子数组进行排序。然后按照子数组的顺序依次合并,最后得到的数组即为合并后的有序数组。类似的,我们可以使用递归或非递归的方式实现这个算法。

总结:

有序合并并输出数组是一个常见的问题,实现起来也较为简单。我们可以利用两个指针分别指向两个数组的头部,通过比较大小的方式将数组依次合并。如果需要合并多个有序数组,我们可以借助归并排序的思想实现。C++语言中的STL库也提供了很多相关的函数和类,可以方便地实现有序合并操作。

  
  

评论区

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