21xrx.com
2025-04-05 05:53:12 Saturday
文章检索 我的文章 写文章
C++实现有序数组合并
2023-06-27 21:40:04 深夜i     12     0
C++ 实现 有序数组 合并

在程序开发过程中,有时需要合并两个有序数组。为了让合并后的数组依旧有序,需要进行排序。在C++语言中,有多种方法可以实现有序数组合并,这里我们介绍其中一种。

我们可以利用指针来合并两个有序数组,具体实现如下:

#include <iostream>
using namespace std;
void merge(int arr1[], int arr2[], int m, int n, int arr3[]) {
  int i = 0, j = 0, k = 0;
  while (i < m && j < n) {
    if (arr1[i] < arr2[j])
      arr3[k++] = arr1[i++];
    else
      arr3[k++] = arr2[j++];
  }
  while (i < m)
    arr3[k++] = arr1[i++];
  while (j < n)
    arr3[k++] = arr2[j++];
}
int main() {
  int arr1[] = 2;
  int arr2[] = 5;
  int m = sizeof(arr1) / sizeof(arr1[0]);
  int n = sizeof(arr2) / sizeof(arr2[0]);
  int arr3[m + n];
  merge(arr1, arr2, m, n, arr3);
  for (int i = 0; i < m + n; i++)
    cout << arr3[i] << " ";
  return 0;
}

上述程序中,我们定义了一个merge函数,该函数通过三个输入数组,将两个有序数组进行合并,并将合并后的有序数组存储到arr3中。程序通过while循环,依次比较arr1和arr2中的元素,将其中较小的元素存储到arr3中,通过i、j、k三个指针控制元素的遍历和赋值。最后,程序通过for循环,将合并后的数组元素依次输出。

需要注意的是,该程序要求输入的两个数组必须是有序的,否则合并后的数组可能不再有序。

在实际的程序开发中,有序数组合并是一个非常常见的操作,掌握一些常用的合并方法,可以提高程序的效率和实现的准确性。

  
  

评论区

请求出错了