[python] 分治法实现归并排序算法

本文详细介绍了如何使用分治法实现归并排序,包括算法的基本原理、关键代码思想、具体实例分析和代码实现。通过将序列不断划分为小规模问题,然后进行合并,最终得到有序序列。此外,还提供了程序运行时间的计算方法和注意事项。
摘要由CSDN通过智能技术生成

                                             分治法实现归并排序

 

分治法简介:

          分治法从字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或者更多相同或者相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。归并排序算法也是简历在分治法的操作上实现的算法,归并排序将一个序列分成多个子序列,将所有子序列有序,再将有序的子序列合并,得到排好序的序列。

 

归并排序基本原理:

 (1)  递归将问题分解,将序列元素大于等于3个的时候,将数组分为两个更小的数组并继续判断元素个数进行划分。

 (2)  解决小规模的问题,如序列中只有一个或者两个元素的时候,将小规模问题进行排序。

 (3)  依次将小规模的问题进行合并,每次得到比小规模问题大一倍的规模的有序序列。

 (4)  最后规模扩大到原问题的规模时,得到的序列便是排好序的有序序列。

 

归并排序关键代码思想:

 (1) 归并过程的实现,定义一个归并函数并且传入三个参数,传入序列,左端点下标和右端点下标。对序列进行平均划分,将两个序列中较小元素的值先进行比较存放到一个临时序列,再将未比较的值进行依次传入临时序列,最后将临时列表重新赋给传入参数列表。

 (2)  分治操作实现,定义一个分治函数,传入三个参数,传入序列,左端点以及右端

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值