算法——归并排序

        归并排序的主要思想就是分治法。顾名思义,就是“分而治之”。这个有点笼统,仔细来说,就是把一串数列不断分成两部分,一直分解下去,这就是“分”;怎么“治”呢?就是从最底层开始逐步合并两个排好序的数列。(好像还是笼统的……那咱看下图总清楚了吧?)

12345
15790128

        第一排是标号,第二排就是咱要整的数列了。我们先看“分”:

15790
128

        先分成两组,这个要平均,奇数的话左边这组可以比右边多一个数。现在这叫第一层,后面就一直按照这个做。

1579
0
12
8

        这是第二组。

15
79
0
12
8

        (数据太少分了三组就没了……)接着咱来“治”它。先搞15与79,79大15小,所以15放第一位:

1579

        然后15与79这个数列在和0去“治”。0先去比15,比15小?那肯定是最小的,因为在此之前15是最小的,于是数列变成了:

01579

        好,现在原来第一层的第一组“治”完了,再去将第一层第二组的重新“治”好。12和8,12大8小,所以8放第一位:

812

        现在就是激动人心的时刻——完成这个序列的排序!(^-^)V

        我们先拿两组的第一个数比较,0小于8,那0肯定就是最小的。然后拿15与8继续比较,8小,放第二位。接着拿12与15比较,12小,放第三位。最后15和79就甭比了,在尾巴歇着吧,排序在第一组那边已经搞完了。(所以79同志在最后一轮连出来PK的门票都没拿到)序列排完之后如下:

08121579

        最后放下整个排序的过程。图中,开始每个柱子的颜色都不同,代表所有数字被分解成了各自一组,红色的柱子代表归并后的数列。(动图原地址:https://pic3.zhimg.com/v2-cdda3f11c6efbc01577f5c29a9066772_b.webp

        求点赞!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值