归并排序-递归

来源:互联网 发布:南通农村商业银行软件 编辑:程序博客网 时间:2024/06/05 03:36
#include<stdio.h>#define num 10int 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;}

0 0
原创粉丝点击