21xrx.com
2024-11-22 07:49:20 Friday
登录
文章检索 我的文章 写文章
C++实现有序数组合并排序
2023-07-05 12:07:43 深夜i     --     --
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++中,通过归并排序算法,可以很轻松地实现有序数组合并排序。

  
  

评论区

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