11月24日总结

本文介绍了归并排序的基本思想和实现过程,它基于分治法,通过将大问题分解为小问题来解决。首先阐述了如何合并两个已排序的数组,并进一步解释了如何将这个过程应用于任意大小的无序序列,逐步将数组分割并合并,最终得到排序好的序列。归并排序的时间复杂度较低,尤其适用于处理多个有序数组的合并。
摘要由CSDN通过智能技术生成

今天主要复习了一下归并排序。

所谓归并排序,其思想主要是基于分治法的思想。所谓分治法,就是分而治之,将问题变成一个个小问题的总和,再一个个解决小问题,那么总的问题就解决了。

设想一下这样两个升序数组{1,4,7},{2,6,8},如果我们只将这两个数组遍历一遍,然后将这两个数组合并成一个数组并且仍然按从小到大排序,那我们应该怎么做。具体做法那当然是从两个数组的第一个元素出发,进行比较,每次选取最小的数放入一个新的数组中,被选取数后的数组往下遍历,再进行比较,直到一个数组中的元素被拿完时,再将另外数组剩下的数补到新数组后面。

比如对于上述的升序数组,我们先进行1和2的比较,将1放入新数组中,再拿4和2进行比较,将2放入新数组中,依次类推。具体实现代码如下。

 或许你会有疑问,为什么要强调升序数组呢,因为如果时两个升序数组,我们只需要将这两个数组各个元素遍历一遍就能得到新的排序好的数组,这样就能降低时间复杂度。这也是归并排序时间复杂度较其他排序时间复杂度较低的原因之一。看到这里你可能会有疑惑了,难道归并排序只能处理两个升序数组吗?那当然不是。设想一下只两个只含有一个元素的数组 ,{1},{2}。那我我们是不是可以按照之前的方法将这两个数组合并成一个数组 。那么对于一段无序序列,{1,6,4,3,9,5},我们可以将其分割成6个只含一个元素的数组,两两进行合并,得到三个升序数组,再合并两个,得到两个升序数组,最后再合并成一个数组(注意,上述方法对数组元素不相同的两个数组同样适用)。最后我们就得到了排序好的数组。其中分割的过程叫做分,合并的过程叫做治。

就先写到这里吧(要睡觉了,明天再完成后续)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值