转载自https://blog.csdn.net/Gavechan/article/details/24851863
#include<stdio.h>
#include<stdlib.h>
#define temp 10
int a[temp];
int b[temp]={3,6,2,9,1,4,7,8,0,13};
void merge(int low,int mid,int high)
{
int i = low,j = mid+1,k = 0;
while(i<=mid && j<=high)
{
if (b[i] <= b[j])
{
a[k] = b[i];
i++;
}
else
{
a[k] = b[j];
j++;
}
k++;
}
while (i<=mid)
{
a[k]=b[i];
i++;k++;
}
while (j<=high)
{
a[k]=b[j];
j++;k++;
}
for (i = 0; i < k; i++)
b[low + i] = a[i];
}
int msort(int low,int high)
{
int mid;
if(low<high)
{
mid = (low + high)/2;
msort(low,mid);
msort(mid+1,high);
merge(low,mid,high);
}
return 0;
}
int main()
{
int s;
msort(0,temp-1);
for(s = 0;s<temp;s++)
{
printf("%d ",a[s]);
}
printf("\n");
return 0;
}