归并排序是一种经典的分治算法,它的基本思想是将待排序数组分成两个部分,分别对这两部分进行排序,然后将排好序的两部分合并起来,得到完全有序的数组。
下面是归并排序的 C 语言实现示
#include <stdio.h>
#include <stdlib.h>
// 将两个有序数组合并为一个有序数组
void merge(int arr[], int left, int mid, int right) {
int n1 = mid - left + 1; // 计算左半部分数组的长度
int n2 = right - mid; // 计算右半部分数组的长度
// 创建临时数组来存储左右两部分数组
int L[n1], R[n2];
// 将数据拷贝到临时数组中
for (int i = 0; i < n1; i++) {
L[i] = arr[left + i];
}
for (int j = 0; j < n2; j++) {
R[j] = arr[mid + 1 + j];
}
// 归并左右两部分数组
int i = 0, j = 0, k = left;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {