归并排序是采用分治法的一个非常典型的应用,另一个可以采用分治法的是快速排序,归并算法比快速排序速度稍低。归并排序的思想就是先递归分解数组,再合并数组。

将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。

如 设有数列{6,202,100,301,38,8,1}

初始状态:6,202,100,301,38,8,1

第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3;

第二次归并后:{6,100,202,301},{1,8,38},比较次数:4;

第三次归并后:{1,6,8,38,100,202,301},比较次数:4;

总的比较次数为:3+4+4=11;

逆序数为14;

python实现:

def merge_sort(alist):"""递归分治序列:param alist::return:"""if len(alist) <= 1:return alistnum = len(alist)//2left = merge_sort(alist[:num])right = merge_sort(alist[num:])return merge(left, right)  # 合并def merge(left, right):"""合并操作:param left::param right::return:"""l, r = 0, 0result = []while l < len(left) and r < len(right):if left[l] < right[r]:  # 筛选排序将left与right最小元素按序加入新序列result.append(left[l])l += 1else:result.append(right[r])r += 1result += left[l:]result += right[r:]return result

python实现归并算法相关推荐

  1. python归并算法_python归并算法

    python数据结构与算法总结 python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: <数据结构和算法对python意味着什么?> <顺序表数据结构 ...

  2. python数据结构与算法总结

    python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: <数据结构和算法对python意味着什么?> <顺序表数据结构在python中的应用> ...

  3. python分割数字_对python数据切割归并算法的实例讲解

    当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需 ...

  4. python 找到两个排序数组的中位数_Python查找两个有序列表中位数的方法【基于归并算法】...

    本文实例讲述了Python查找两个有序列表中位数的方法.,具体如下: 今天做到的一个机试题目,很简单,这里简单记录一下: 我用的是归并的思想,当然还可以用递归的方法,下面是具体实现: #!usr/bi ...

  5. python 经典排序算法

    python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...

  6. python常见排序算法解析

    python--常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分 ...

  7. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  8. python程序设计与算法基础江红答案_《Python程序设计与算法基础教程(第二版)》江红 余青松,第十一章课后习题答案...

    推荐阅读 <Python程序设计与算法基础教程(第二版)>江红 余青松 全部章节的课后习题,上机实践,课后答案,案例研究 文章目录 一些知识点总结和几个例题 选择题:1~5 填空题:1~8 ...

  9. python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码

    利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...

  10. 数学推导+纯Python实现机器学习算法:GBDT

    Datawhale推荐 作者:louwill,Machine Learning Lab 时隔大半年,机器学习算法推导系列终于有时间继续更新了.在之前的14讲中,笔者将监督模型中主要的单模型算法基本都过 ...

最新文章

  1. 如何在 Centos8 中安装 Lynis审计工具
  2. python 如何获取当前时间并转换为年月日
  3. CF1237F Balanced Domino Placements(组合计数,dp)
  4. ubuntu创建php文件,ubuntu系统创建桌面快捷方式的方法
  5. 代码全靠copy,Bug又烂又多,做程序员的目的是什么?
  6. duplicate database的时候,rman连接 auxiliary database的后状态不正确
  7. 顺序程序设计02 - 零基础入门学习C语言08
  8. 四项第一!这款芯片让全世界嫉妒!
  9. 【转载】Java工程师路线图
  10. 移远EC20中SD卡无法开机后自动识别是否拔插
  11. 520来袭,程序猿的浪漫 - 前端情书
  12. 应用MATLAB求解线性代数题目(五)——特征值与特征向量
  13. Norms in Matrix and Vector
  14. latex文字加粗、斜体
  15. 【SPARC】SPARC V8寄存器介绍
  16. Android手机接入usb屏幕失灵,手机屏幕失灵了怎么办?安卓手机屏幕失灵解决方法...
  17. 一个初创企业的“生还”记录
  18. 微信扫码支付dome php,帝国cms 微信扫码支付 模式二 扫码付款demo
  19. 爆炸的符卡洋洋洒洒题解报告
  20. 计算机键盘space键在哪,space是哪个键,详细教您space是哪个键

热门文章

  1. BZOJ2768: [JLOI2010]冠军调查
  2. openstack--5--控制节点和计算节点安装配置nova
  3. Tomcat中server.xml配置及Context的配置说明
  4. Codeforces 263E Rhombus (看题解)
  5. 手把手0基础项目实战(三)——教你开发一套电商平台的安全框架
  6. Android内核剖析pdf
  7. 【原创】SSAS-引用维度与多数据源、多数据源视图引发分区错误
  8. 模块化分析设计(简单的注册登录模块)
  9. 在电脑前,写点什么...
  10. IEEE754标准浮点格式