排序算法第三篇——归并排序


算法描述:

归并(Merge)排序是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

对一个数组进行归并排序主要分为以下三步:

1、分解。将一个数组分为两个个数组。

2.、治之。对分好的两个数组,分别用归并排序算法进行排序。

3、归并。将两个数组归并。

Java源代码:

运行结果:

排序前:
824 692 469 255 518 492 177 403 325 350
合并 第1到1之间的元素 和  第2到2之间的元素
692 824 469 255 518 492 177 403 325 350
合并 第1到2之间的元素 和  第3到3之间的元素
469 692 824 255 518 492 177 403 325 350
合并 第4到4之间的元素 和  第5到5之间的元素
469 692 824 255 518 492 177 403 325 350
合并 第1到3之间的元素 和  第4到5之间的元素
255 469 518 692 824 492 177 403 325 350
合并 第6到6之间的元素 和  第7到7之间的元素
255 469 518 692 824 177 492 403 325 350
合并 第6到7之间的元素 和  第8到8之间的元素
255 469 518 692 824 177 403 492 325 350
合并 第9到9之间的元素 和  第10到10之间的元素
255 469 518 692 824 177 403 492
325 350
合并 第6到8之间的元素 和  第9到10之间的元素
255 469 518 692 824
177 325 350 403 492
合并 第1到5之间的元素 和  第6到10之间的元素
177 255 325 350 403 469 492 518 692 824

该算法的时间复杂度为O(nlog2n),算法是稳定的。

posted @ 2012-04-13 17:36  Java EE  阅读(215)  评论(0编辑  收藏  举报