归并排序

来源:互联网 发布:md5加密算法c语言实现 编辑:程序博客网 时间:2024/06/06 02:30
#include<stdio.h>#define N 10void merge(int a[],int i,int m,int j){    int p=i;    int q=m+1;    int r=i;    int C[N];    while(p<=m&&q<=j)    {        if(a[p]<=a[q]) C[r++]=a[p++];        else C[r++]=a[q++];    }    while(p<=m) C[r++]=a[p++];    while(q<=j) C[r++]=a[q++];    for(int k=i;k<=j;k++)    a[k]=C[k];}   void merge_sort(int a[],int i,int j){    if(i==j) return ;    int m=(i+j)/2;    merge_sort(a,i,m);    merge_sort(a,m+1,j);    merge(a,i,m,j);}int main(){    int a[N];    for(int i=0;i<5;i++)    scanf("%d",&a[i]);    merge_sort(a,0,4);    for(int i=0;i<5;i++)    printf("%d ",a[i]);    return 0;} 
0 0