嗯归并排序

本文深入解析归并排序的分治思想,通过拆分、排序和合并的过程,展示如何利用递归来实现数组的有序排列,特别强调了下标处理对正确性的关键作用。通过实例演示了如何在Python中操作数组,以及为何mid+1而非mid的选择至关重要。
摘要由CSDN通过智能技术生成

归并排序--分治

把一个数组拆成两个,然后再和起来,在重新组合的过程中比较两个数组中的元素的大小并排序。

在此过程中,当数组中只有一个元素时认为其是有序的并返回。

因此需要用到递归,当 l>=r 时返回。

1.确定分界点mid。

2.递归left和right。

3.比较两个数组并将其合二为一。

在上图中数组a实际上并没有被拆开,而是仅仅以下标区分,所以在合并时为了方便把数据暂存在了b数组中,因此需要在最后需要把b中的已经排好序的数字拷贝到a里去。

关于排序,无论是快排还是归并,对下标进行的加一等处理比较关键,这一点是需要慢慢思考的。

不然原数据有可能被覆盖导致错误。

例如,上图的j=mid+1换成j=mid就不行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值