21xrx.com
2025-03-26 12:03:54 Wednesday
文章检索 我的文章 写文章
C++实现有序数组合并排序
2023-07-07 12:49:59 深夜i     21     0
C++ 数组 合并 排序 有序

有序数组合并排序是一种常用的算法,它可以将两个有序的数组合并成一个有序的数组。在C++中,我们可以使用STL库中的merge函数来实现有序数组的合并排序。

merge函数的语法为:

template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator merge (InputIterator1 first1, InputIterator1 last1,
           InputIterator2 first2, InputIterator2 last2,
           OutputIterator result);

其中,first1和last1表示第一个有序数组的起始位置和结束位置;first2和last2表示第二个有序数组的起始位置和结束位置;result表示合并后的有序数组的起始位置。

下面是一个具体的例子,假设我们有两个有序数组arr1和arr2,我们要将它们合并成一个有序数组arr3。代码如下:

#include <algorithm>
#include <iostream>
using namespace std;
void merge(int arr1[], int m, int arr2[], int n, int arr3[]) {
  merge(arr1, arr1 + m, arr2, arr2 + n, arr3);
}
int main() {
  int arr1[] = 4;
  int arr2[] = 2;
  int m = sizeof(arr1) / sizeof(int);
  int n = sizeof(arr2) / sizeof(int);
  int arr3[m + n];
  merge(arr1, m, arr2, n, arr3);
  cout << "合并排序后的数组:";
  for (int i = 0; i < m + n; i++) {
    cout << arr3[i] << " ";
  }
  cout << endl;
  return 0;
}

在上面的例子中,我们定义了一个merge函数来进行数组合并。首先,我们需要计算出两个数组的长度m和n,然后定义一个大小为m+n的数组arr3来存储合并后的有序数组。

接着,我们调用STL库中的merge函数,将arr1和arr2合并成一个有序数组arr3。最后,我们打印出合并排序后的数组arr3。

使用C++的STL库的merge函数实现有序数组的合并排序非常简单方便。通过掌握这个函数的使用,我们可以更轻松地解决有序数组的合并排序问题。

  
  

评论区