归并排序算法C语言
#include<stdio.h>
#include<stdlib.h>
#define LENGTH 10
void Merge(int s[],int left,int m,int right)
{
int low=left,hightlow=m+1,k=0;
int *s1=(int*)malloc((right-left+1)*sizeof(int));
while(low<=m&&hightlow<=right)
{
if(s[low]<=s[hightlow])
s1[k++]=s[low++];
else
s1[k++]=s[hightlow++];
}
while(low<=m)
s1[k++]=s[low++];
while(hightlow<=right)
s1[k++]=s[hightlow++];
for(int i=0;i<=right-left;i++)
s[i+left]=s1[i];
free(s1);
}
void MergeSort(int s[],int left,int right)
{
if(left<right)
{
int m=(left+right)/2;
MergeSort(s,left,m);
MergeSort(s,m+1,right);
Merge(s,left,m,right);
}
}
int main()
{
int a[LENGTH];
for(int i=0;i<LENGTH;i++)
a[i]=rand()%100+1;
MergeSort(a,0,LENGTH-1);
for(int i=0;i<LENGTH;i++)
printf("%d\n",a[i]);
return 0;
}