C++实现归并排序
在计算机科学中,归并排序是一种高效的排序算法,其时间复杂度为O(n log n)。它使用分治策略将一个大问题分解为多个小问题,并将小问题的解合并成最终解。在本文中,我们将会学习如何使用C++实现归并排序。
算法实现
首先,让我们来看看归并排序的基本思想:将待排序的数组划分为两个子数组,然后对这两个子数组分别进行排序,最后将排序好的子数组合并成一个有序的数组。这个过程可以使用递归来实现。
下面是归并排序的实现代码:
void merge(int arr[], int left, int middle, int right) {
int i, j, k;
int n1 = middle - left + 1;
int n2 = right - middle;
// 创建临时数组
int L[n1], R[n2];
// 将数据复制到临时数组 L[] 和 R[] 中
for (i = 0; i < n1; i++)
L[i] = arr[left + i];
for (j = 0; j < n2; j++)
R[j] = arr[middle + 1 + j];
// 合并临时数组到 arr[left..right]
i = 0;
j = 0;