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)级别,属于稳定的排序方法。