归并排序

来源:互联网 发布:汽车图解软件哪个好 编辑:程序博客网 时间:2024/05/05 10:13

归并排序基本思想:

将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。

对于一个无序序列来说(通常为一个数组),为得到有序子序列,通常将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。若将两个有序表合并成一个有序表,称为二路归并

 

综上可知:

归并排序其实要做两件事:

1)“分解”——将序列每次折半划分

2)“合并”——将划分后的序列段两两合并后排序


由以上图解可知,子表个数为奇数,则最后一个子表无须和其他子表归并(即本趟处理轮空):若子表个数为偶数,则要注意到最后一对子表中后一个子表区间的上限为n-1

 

图解图片来自http://blog.csdn.net/collonn/article/details/17581953

 

另外参考:

http://www.cnblogs.com/jingmoxukong/p/4308823.html

 

代码如下:

http://download.csdn.net/detail/mochounv/9691113

代码中的MergeSort(T[] source)。




0 0
原创粉丝点击