#include <stdio.h>
#include <stdlib.h>
#define MAXN 10
void Merge(int array[],int start,int mid,int end)
{
int arra[MAXN];
int arrb[MAXN];
int lena = mid-start+1;
int lenb = end-mid;
int i,j,k;
for(i=0,j=start;i<lena;i++,j++)
arra[i]=array[j];
for(i=0,j=mid+1;i<lenb;i++,j++)
arrb[i] = array[j];
for(i=0,j=0,k=start;i<lena&&j<lenb;k++)
{
if(arra[i]<arrb[j])
array[k] = arra[i++];
else
array[k] = arrb[j++];
}
while(i<lena)
array[k++]=arra[i++];
while(j<lenb)
array[k++]=arrb[j++];
}
void MergeSort(int array[],int start,int end)
{
if(end > start)
{
int mid = (start+end)/2;
MergeSort(array,start,mid);
MergeSort(array,mid+1,end);
Merge(array,start,mid,end);
}
}
int main()
{
int i;
int array[10]={8,5,6,3,4,2,1,0,9,7};
MergeSort(array,0,9);
for(i=0;i<=9;i++)
printf("%d ",array[i]);
return 0;
}
归并排序
最新推荐文章于 2025-03-09 13:50:23 发布
本文介绍了一种经典的排序算法——归并排序,并提供了详细的C语言实现代码。通过对数组的递归划分与合并操作,实现了对整数数组的有效排序。
3462

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



