#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
#define MaxSize 50
void MergeSort(int A[],int low,int mid,int high)
{
static int B[MaxSize];
for(int i=low;i<=high;i++)
{
B[i]=A[i];
}
int j,k,i;
for(j=low,k=mid+1,i=j;j<=mid&&k<=high;i++) {
if(B[j]<B[k])
A[i]=B[j++];
else
A[i]=B[k++];
}
while(j<=mid)
{
A[i++]=B[j++];
}
while(k<=high)
{
A[i++]=B[k++];
}
}
void Merge(int A[],int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
Merge(A,low,mid);
Merge(A,mid+1,high);
MergeSort(A,low,mid,high);
}
}
void Print(int A[])
{
for(int i=0;i<9;i++)
{
printf("%3d",A[i]);
}
}
int main() {
int A[MaxSize]={1,2,6,5,3,25,56,98,64};
Merge(A,0,8);
Print(A);
return 0;
}
归并排序的代码
最新推荐文章于 2025-10-28 10:33:30 发布
该代码示例展示了如何用C语言实现归并排序算法。通过对数组进行分治策略,将两个已排序的子数组合并成一个有序数组,最终完成整个数组的排序。在主函数中,定义了一个包含9个元素的数组,并调用了Merge函数进行排序,然后打印排序后的结果。
812

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



