归并排序的主要思想就是分治法。顾名思义,就是“分而治之”。这个有点笼统,仔细来说,就是把一串数列不断分成两部分,一直分解下去,这就是“分”;怎么“治”呢?就是从最底层开始逐步合并两个排好序的数列。(好像还是笼统的……那咱看下图总清楚了吧?)
第一排是标号,第二排就是咱要整的数列了。我们先看“分”:
先分成两组,这个要平均,奇数的话左边这组可以比右边多一个数。现在这叫第一层,后面就一直按照这个做。
这是第二组。
(数据太少分了三组就没了……)接着咱来“治”它。先搞15与79,79大15小,所以15放第一位:
然后15与79这个数列在和0去“治”。0先去比15,比15小?那肯定是最小的,因为在此之前15是最小的,于是数列变成了:
好,现在原来第一层的第一组“治”完了,再去将第一层第二组的重新“治”好。12和8,12大8小,所以8放第一位:
现在就是激动人心的时刻——完成这个序列的排序!(^-^)V
我们先拿两组的第一个数比较,0小于8,那0肯定就是最小的。然后拿15与8继续比较,8小,放第二位。接着拿12与15比较,12小,放第三位。最后15和79就甭比了,在尾巴歇着吧,排序在第一组那边已经搞完了。(所以79同志在最后一轮连出来PK的门票都没拿到)序列排完之后如下:
最后放下整个排序的过程。图中,开始每个柱子的颜色都不同,代表所有数字被分解成了各自一组,红色的柱子代表归并后的数列。(动图原地址:https://pic3.zhimg.com/v2-cdda3f11c6efbc01577f5c29a9066772_b.webp)![](https://i-blog.csdnimg.cn/blog_migrate/d15b7ee4d15347b1cc0c5791ced13352.gif)
求点赞!