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中super的用法实例
May 28 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 Python
Python聊天室实例程序分享
Jan 05 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
Django权限机制实现代码详解
Feb 05 Python
python爬取m3u8连接的视频
Feb 28 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
Selenium定位元素操作示例
Aug 10 Python
Django基础知识 URL路由系统详解
Jul 18 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python二元算术运算常用方法解析
Sep 15 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
一个程序下载的管理程序(三)
2006/10/09 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
python计数排序和基数排序算法实例
2014/04/25 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
开源Web应用框架Django图文教程
2017/03/09 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
python如何快速生成时间戳
2020/07/21 Python
浅析Python 多行匹配模式
2020/07/24 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
广告词串烧
2014/03/19 职场文书
教师节学生演讲稿
2014/09/03 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
医院科室评语
2015/01/04 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python