归并排序

本文深入讲解了归并排序算法,一种基于分而治之策略的有效排序方法。文章详细阐述了如何将数组分解成小块进行排序,再逐步合并成有序的大数组。通过具体的代码实例,展示了归并排序的实现过程。

归并排序

归并排序是一种分而治之的思想,是建立在归并操作上的一种有效排序算法。将需要排序的数组分成两个或一个小数组先进行排序,再合并为大数组。这种方法可以用空间换取时间,来降低运行的时间复杂度。

下面我们来看看具体实现:

int function(int n,int m)
{
    int mid,i,j,k;
    if(n<m)//当n<m时,继续
    {
        mid=(n+m)/2;//取m与n和的中间值,不断分隔开来
        i=n;
        k=n;
        j=mid+1;
        function(n,mid);
        function(mid+1,m);//将大数组分成两个元素或只剩一个元素
        while(i<=mid&&j<=m)
        {
            if(a[i]<=a[j])
                b[k++]=a[i++];
            else
            {
                b[k++]=a[j++];
            }
        }
        for(; i<=mid; i++)
            b[k++]=a[i];
        for(; j<=m; j++)
            b[k++]=a[j];//若一个小块中仍没有完全遍历,则直接赋值
        for(i=n; i<=m; i++)//将排序过的数组重新赋值排序(和)
            a[i]=b[i];
    }
}

总而言之,归并排序就是将数组分成几个小块(元素个数为一或二),先在小块中排序再一点一点变成大块的数组即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值