您的位置:首页 > 其它

归并排序-递归

2017-05-05 23:26 127 查看
#include<stdio.h>
#define num 10
int a[num];

void Merging(int a[],int first,int mid,int end)
{
int i=first,m=mid;
int j=mid+1,n=end;
int k=0;
int temp[num];
while(i<=m&&j<=n)
{
if(a[i]<a[j])temp[k++]=a[i++];
else temp[k++]=a[j++];
}
while(i<=m)
{
temp[k++]=a[i++];
}
while(j<=n)
{
temp[k++]=a[j++];
}
for(int i=0;i<k;i++){
a[first+i]=temp[i];
}
}
void merge_sort(int a[], int start, int end) {
int mid = (start+end)/2;
if(start<end) {
merge_sort(a, start, mid);
merge_sort(a, mid+1, end);
Merging(a, start, mid, end);
}
}

int main()
{
printf("Please input a array: ");
for(int i=0;i<num;i++){
scanf("%d",&a[i]);
}
merge_sort(a,0,num-1);
printf("After the sort: ");
for(int i=0;i<num;i++){
printf("%d ",a[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: