21xrx.com
2024-12-22 22:44:02 Sunday
登录
文章检索 我的文章 写文章
C++实现有序数组合并
2023-06-27 21:40:04 深夜i     --     --
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循环,将合并后的数组元素依次输出。

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

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

  
  

评论区

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