#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Merge(int a[], int low, int mid, int high)
{
int* temp = (int*)malloc(sizeof(a));
int start = low;
int end = high;
int highstart = mid + 1;
int i = low;
while (low <= mid && highstart <= high)//归并
{
if (a[low] <= a[highstart])
temp[i++] = a[low++];
else
temp[i++] = a[highstart++];
}
while (low <= mid) //剩余归并
temp[i++] = a[low++];
while (highstart <= high)
temp[i++] = a[highstart++];
for (int i = start; i <= end; i++)
{
a[i] = temp[i];
}
}
void MergeSort(int a[], int low, int high)
{
if (low < high)
{
int mid = (low + high) / 2;
MergeSort(a, low, mid);
MergeSort(a, mid + 1, high);
Merge(a, low, mid, high);
}
}
void print(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%d\t", a[i]);
}
}
int main()
{
int n;
scanf("%d", &n);
int* a = (int*)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++)
{
scanf("%d", a + i);
}
MergeSort(a, 0, n - 1);
print(a, n);
return EXIT_SUCCESS;
}
基于C语言的归并排序
C语言实现的归并排序算法
最新推荐文章于 2025-12-07 21:20:15 发布
该博客展示了如何使用C语言实现归并排序算法。代码中定义了MergeSort函数进行递归排序,并通过Merge函数将两个已排序的子数组合并。程序还包含一个打印函数用于展示排序结果。在主函数中,用户输入数组大小和元素,然后调用归并排序函数对数组进行排序并输出结果。
1410

被折叠的 条评论
为什么被折叠?



