python实现归并排序算法


Posted in Python onNovember 22, 2018

归并排序是典型的分治法的应用

思想:先递归分解数组,再合并数组

原理:将数组分解最小之后,然后合并两个有序数组,基本思想是比较两个数组的最前面的数,谁小就取谁,取完后,将相应的指针后移以为。然后再比较,直到一个数组为空,最后把另一个数组的剩余部分复制过来即可。

Python代码实现:

#归并排序
 
def merge_sort(alist):
 if len(alist) <= 1:
  return alist
 # 二分分解
 num = len(alist) / 2
 left = merge_sort(alist[:num])
 right = merge_sort(alist[num:])
 # 合并
 return merge(left, right)
 
 
def merge(left, right):
 '''合并操作,将两个有序数组left[]和right[]合并成一个大的有序数组'''
 # left与right的下标指针
 l, r = 0, 0
 result = []
 while l < len(left) and r < len(right):
  if left[l] < right[r]:
   result.append(left[l])
   l += 1
  else:
   result.append(right[r])
   r += 1
 result += left[l:]
 result += right[r:]
 return result
 
 
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
sorted_alist = merge_sort(alist)
print(sorted_alist)

时间复杂度:

最优时间复杂度:O(nlongn)

最坏时间复杂度 :O(nlongn)

稳定性:稳定

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
Python实现按中文排序的方法示例
Apr 25 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
python word转pdf代码实例
Aug 16 Python
Python列表切片常用操作实例解析
Dec 16 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
python判断链表是否有环的实例代码
Jan 31 Python
python实现学生成绩测评系统
Jun 22 Python
Django celery异步任务实现代码示例
Nov 26 Python
深度学习详解之初试机器学习
Apr 14 Python
教你用Python写一个植物大战僵尸小游戏
Apr 25 Python
Python的iOS自动化打包实例代码
Nov 22 #Python
详解如何用django实现redirect的几种方法总结
Nov 22 #Python
PyGame贪吃蛇的实现代码示例
Nov 21 #Python
python+flask实现API的方法
Nov 21 #Python
python实现事件驱动
Nov 21 #Python
python事件驱动event实现详解
Nov 21 #Python
python程序封装为win32服务的方法
Mar 07 #Python
You might like
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php去除HTML标签实例
2013/11/06 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
浅谈Python中copy()方法的使用
2015/05/21 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python实现连续图文识别
2018/12/18 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
python关于调用函数外的变量实例
2019/12/26 Python
python怎么判断模块安装完成
2020/06/19 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
网络编辑职责
2014/03/01 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
跑出一片天观后感
2015/06/08 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python