文章标题

归并排序

#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;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/OJZFY/article/details/49965051
个人分类: C归并排序
下一篇文章标题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭