本文接《六种常用的数列排序算法图解(上)》,用图解的方式对归并排序做详细的解说。
归并排序
归并排序是数列排序的算法之一,本文对6、4、3、7、5、1、2做归并排序示范:
数列分割
不断对数列进行递归对半分割,直到不能再分。
- ① 对
6、4、3、7、5、1、2做升序排序 - ② 把数列分成两半
- ③ 继续把每个数列分成两半
- ④ 直到每个数字完成单独分割,分割完成
合并数列
接下来结合分割的每个组,合并时候,按照数字的升序移动,使得合并后的数字在组内按升序排列。
- ① 按升序排列(从小到大),重新两两合成一组,其中
4、6,1、5两组需要互换位置(从小到大)。 - ② 此时得出:
4,6,3,7,5,1,2四组 - ③ 继续两两合并,当需要合并的组包含多个数字时候,比较开头的数字,先移动较小的数字,随后再移动大的。合并后得出两组:
3、4、6、7,1、2、5。 - ④ 继续合并,遵循两组数字从开头的数字比较,先移动较小的数字,随后再移动较大的,最终合并成一组数:
1、2、3、4、5、6、7,完成"归并排序"。
总结
归并排序分两个阶段:数列分割和合并数列,数列分割阶段递归对半拆分数列,直到每组数不能再拆分。合并数列回溯拆分过程,一步步把拆分的数组按照特定的规则重新合并回一个数列,从而完成排序。