Java实现-高效排序算法之归并排序

1、归并排序是Java.util.Collections类中包装的排序方法。

2、归并排序的设计思想:是将一个数组的两个有序的部分合并成一个有序数组,其算法的本质也是依靠递归来实现的。

3、归并排序的缺陷:在于需要额外的存储空间来合并数组。在归并排序的过程中必须使用一个临时数组,归并结束后,在将这个临时数组的内容传递给原数组。

4、归并过程的伪代码如下所示:

mergesort(data, first, last)

    if first < last

        mid = ( last + first )/2;

        mergesort( data, first, mid );

        mergesort( data, mid + 1, last );

        merge( data, first, last );

归并方法(过程)的伪代码:

merge( array, first, last )

    mid = ( first + last )/2;

    i1 = 0;

    i2 = first;

    i3 = mid + 1;

    while array的左子树和右子树都有元素

        if array[i2] < array[i3]

            tmp[i1++] = array[i2++];

        else

            tmp[i1++] = array[i3++];

        把array中剩余的元素装入tmp;

        将tmp的内容装入array中;

综上:归并排序的主要是递归来实现,关键内容还是对于方法merge()的实现。

排序算法的时间复杂度为O(nlogn)级别,属于稳定的排序方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值