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

来源:互联网 发布:snh48 成员家境 知乎 编辑:程序博客网 时间:2024/05/17 04:27

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
原创粉丝点击