归并排序( Merge Sort ) 算法就是将多个有序数据表合并成一个有序数据表,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用

归并排序基本思路:
一个待排序的原始数据序列进行合并排序的基本思路是,首先将含有n 个结点的待排序
数据序列看作由n 个长度为1 的有序子表组成,将其依次两两合并,得到长度为2 的若干有
序子表;然后,再对这些子表进行两两合并, 得到长度为4 的若干有序子表……, 重复上述
过程, 一直到最后的子表长度为n, 从而完成排序过程。
举个栗子:
假设有9个需要排序的数据序列67 、65 、77 、38 、97 、3 、33 、49 、34 。归并排序算法的操作步骤如下:
(1)首先将9 个原始数据看成9 个长度为1 的有序子表。每一个子表中只有一个数据,这里可以认为单个数据是有序的。
(2) 将这9 个有序子表两两合并,为了方便,将相邻的子表进行两两合并。例如,将第1 、2 个合并在一起,第3 、4 个合在一起……, 最后一个没有合并的,就单独放在那里,直接进入下一遍合并.

(3)经过第1 遍的合并,得到长度为2 的有序表序列,再将这些长度为2 的有序表序列进行两两合并.

(4)重复两两合并,经过第2 遍合并,得到长度为4 的有序表序列,再将这些长度为4的有序表进行两两合并.

(5)经过第3 遍合并,得到长度为8 的有序表序列, 以及最后只有一个元素的序列.

(6) 将这两个序列进行合并,即可完成归并排序.

代码实例:
package
本文详细介绍了归并排序算法的工作原理,包括其分治思想和逐步合并的过程。通过一个具体的例子展示了从原始数据序列到最终有序序列的排序步骤。此外,还提供了一个代码实例来辅助理解该算法的实现。
3万+

被折叠的 条评论
为什么被折叠?



