21xrx.com
2024-09-20 00:16:54 Friday
登录
文章检索 我的文章 写文章
C++实现合并两个有序数组
2023-07-06 00:57:06 深夜i     --     --
C++ merge 有序数组 实现

C++是一种高效、快速和多功能的编程语言,在软件开发中广泛使用。其中一个常见的应用是合并两个有序数组。这篇文章将介绍如何使用C++语言实现这个任务。

首先,需要了解什么是有序数组。有序数组是一个按照数字大小顺序排列的数组。当处理两个有序数组时,我们需要将它们合并成一个新的有序数组。

以下是一个实现该任务的C++函数:


void mergeArrays(int arr1[], int arr2[], int n1, int n2, int mergedArr[]) {

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

  while (i < n1 && j < n2) {

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

      mergedArr[k] = arr1[i];

      i++;

    } else {

      mergedArr[k] = arr2[j];

      j++;

    }

    k++;

  }

  while (i < n1) {

    mergedArr[k] = arr1[i];

    i++;

    k++;

  }

  while (j < n2) {

    mergedArr[k] = arr2[j];

    j++;

    k++;

  }

}

这个函数接受四个参数:两个待合并的有序数组、它们的大小,以及一个存储合并结果的新数组。

该函数的工作过程如下。首先,我们创建三个指针变量i、j和k,它们分别指向第一个数组、第二个数组和新数组的起始位置。然后,在一个while循环中,我们比较两个数组的第一个元素,并将较小的元素复制到新数组中。如果有一个数组已经到达其末尾,则将剩余的元素复制到新数组中。当两个数组都被复制完后,新数组就是合并后的有序数组。

下面是一个例子,该例子使用上述函数合并两个有序数组:


#include <iostream>

using namespace std;

void mergeArrays(int arr1[], int arr2[], int n1, int n2, int mergedArr[]);

int main() {

  int n1, n2;

  cout << "Enter size of array 1: ";

  cin >> n1;

  int arr1[n1];

  cout << "Enter elements of array 1: ";

  for (int i = 0; i < n1; i++) {

    cin >> arr1[i];

  }

  cout << "Enter size of array 2: ";

  cin >> n2;

  int arr2[n2];

  cout << "Enter elements of array 2: ";

  for (int i = 0; i < n2; i++) {

    cin >> arr2[i];

  }

  int mergedArr[n1 + n2];

  mergeArrays(arr1, arr2, n1, n2, mergedArr);

  cout << "Merged array: ";

  for (int i = 0; i < n1 + n2; i++) {

    cout << mergedArr[i] << " ";

  }

  cout << endl;

  return 0;

}

void mergeArrays(int arr1[], int arr2[], int n1, int n2, int mergedArr[]) {

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

  while (i < n1 && j < n2) {

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

      mergedArr[k] = arr1[i];

      i++;

    } else {

      mergedArr[k] = arr2[j];

      j++;

    }

    k++;

  }

  while (i < n1) {

    mergedArr[k] = arr1[i];

    i++;

    k++;

  }

  while (j < n2) {

    mergedArr[k] = arr2[j];

    j++;

    k++;

  }

}

在该例子中,我们首先从用户那里获取两个有序数组的大小和元素,然后调用mergeArrays函数并将结果存储在mergedArr数组中。最后,我们将mergedArr数组中的元素输出到控制台。

总结来说,使用C++语言合并两个有序数组非常简单,只需编写一个函数,并按照上面的方法使用该函数即可。这种方法可以应用于任何大小的有序数组,实现了高效且可靠的合并操作。

  
  

评论区

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