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 一个figure上显示多个图像的实例
Jul 08 Python
python爬虫之快速对js内容进行破解
Jul 09 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
python 画出使用分类器得到的决策边界
Aug 21 Python
简单了解python协程的相关知识
Aug 31 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
May 25 Python
pandas处理csv文件的方法步骤
Oct 16 Python
pytorch查看网络参数显存占用量等操作
May 12 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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 进程锁定问题分析研究
2009/11/24 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
node.js基础知识小结
2018/02/26 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
node事件循环和process模块实例分析
2020/02/14 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
应届生高等护理求职信
2013/10/12 职场文书
毕业生的求职信范文分享
2013/12/04 职场文书
解除合同协议书
2014/04/17 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
求职简历自我评价范文
2015/03/10 职场文书
员工表扬信怎么写
2015/05/05 职场文书
信息技术课教学反思
2016/02/23 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js