文章标题

来源:互联网 发布:怎么提高编程打字速度 编辑:程序博客网 时间:2024/04/30 17:47

归并排序

#include<stdio.h>#include<stdlib.h>\\将两个有序数组合并int m1(int a[],int f,int e,int m){    int *t=(int*)malloc((e-f+1)*sizeof(int));    int k=0,i,j;    i=f;    j=m+1;    while(i<=m&&j<=e)    {        if(a[i]<=a[j])            t[k++]=a[i++];        else            t[k++]=a[j++];    }    while(i<=m)        t[k++]=a[i++];    while(j<=e)        t[k++]=a[j++];    for(i=0;i<k;i++)            a[f+i]=t[i];        free(t);}int m2(int a[],int f,int e){    int m;    m=(e+f)/2;    if(f<e)    {        m2(a,f,m);\\作排序        m2(a,m+1,e);\\右排序        m1(a,f,e,m);\\递归合并    }}\\排序10个输入的数组int main(){    int a[10],i;    for(i=0;i<10;i++)        scanf("%d",&a[i]);    m2(a,0,9);    for(i=0;i<10;i++)        printf("%d ",a[i]);    return 0;}
1 0
原创粉丝点击