21xrx.com
2025-03-27 18:43:25 Thursday
文章检索 我的文章 写文章
C++实现有序数组合并排序
2023-07-05 12:07:43 深夜i     12     0
C++ 有序数组 合并 排序

C++是一种强大的编程语言,可以被用于各种不同类型的应用。有序数组合并排序是其中的一个重要应用,它可以将两个有序的数组合并并按升序进行排序。

在C++中,可以使用归并排序算法来实现有序数组合并排序。这个算法通过递归将数组不断分成更小的子数组,直到单个元素为止,然后将每个子数组合并成一个更大的有序数组,最终形成一个完全排序的数组。

下面是用C++编写的一个例子,实现了有序数组的合并排序:

#include <iostream>
using namespace std;
void merge(int arr[], int l, int m, int r) {
  int i, j, k;
  int n1 = m - l + 1;
  int n2 = r - m;
  int L[n1], R[n2];
  for (i = 0; i < n1; i++)
    L[i] = arr[l + i];
  for (j = 0; j < n2; j++)
    R[j] = arr[m + 1 + j];
  i = 0;
  j = 0;
  k = l;
  while (i < n1 && j < n2) {
    if (L[i] <= R[j]) {
      arr[k] = L[i];
      i++;
    } else {
      arr[k] = R[j];
      j++;
    }
    k++;
  }
  while (i < n1) {
    arr[k] = L[i];
    i++;
    k++;
  }
  while (j < n2) {
    arr[k] = R[j];
    j++;
    k++;
  }
}
void mergeSort(int arr[], int l, int r) {
  if (l < r) {
    int m = l + (r - l) / 2;
    mergeSort(arr, l, m);
    mergeSort(arr, m + 1, r);
    merge(arr, l, m, r);
  }
}
int main() {
  int arr[] = 56;
  int n = sizeof(arr) / sizeof(arr[0]);
  mergeSort(arr, 0, n - 1);
  cout << "Sorted Array: ";
  for (int i = 0; i < n; i++)
    cout << arr[i] << " ";
  cout << endl;
  return 0;
}

在这个例子中,merge()函数用于将左右两个有序数组合并成一个大的有序数组,而mergeSort()函数通过递归将数组拆分成更小的子数组,直到单个元素为止,并进一步将它们按顺序合并起来。在我们的main函数中,我们只是简单地定义了一个int类型的数组,然后调用了mergeSort()函数来排列它。

总而言之,有序数组合并排序是一个非常有用的算法,因为它允许我们将两个已排序的数组合并为一个,并按升序排列。这对于需要将大量数据排序的应用程序来说尤其有用。在C++中,通过归并排序算法,可以很轻松地实现有序数组合并排序。

  
  

评论区

请求出错了