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 相关文章推荐
学习python 之编写简单乘法运算题
Feb 27 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
python实现根据文件格式分类
Oct 31 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
js调用css属性写法
2013/09/21 Javascript
Augularjs-起步详解
2016/07/08 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
canvas学习之API整理笔记(二)
2016/12/29 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
深入理解javascript中的this
2021/02/08 Javascript
Python3里的super()和__class__使用介绍
2015/04/23 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
通过代码实例了解Python sys模块
2020/09/14 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
linux面试题参考答案(4)
2013/01/28 面试题
酒店个人培训自我鉴定
2013/12/11 职场文书
组织鉴定材料
2014/06/02 职场文书
金融与证券专业求职信
2014/06/22 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
商务信函英语问候语
2015/11/10 职场文书
信息技术研修心得体会
2016/01/08 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书