Python实现的归并排序算法示例


Posted in Python onNovember 21, 2017

本文实例讲述了Python实现的归并排序算法。分享给大家供大家参考,具体如下:

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

Python实现代码如下:

#-*- coding: UTF-8 -*-
import numpy as np
def Merge(a, f, m, l):
  i = f
  j = m + 1
  tmp = []
  while i <= m and j <= l:
    if a[i] <= a[j]:
      tmp.append(a[i])
      i += 1
    else:
      tmp.append(a[j])
      j += 1
  while i <= m:
    tmp.append(a[i])
    i += 1
  while j<= l:
    tmp.append(a[j])
    j+= 1
  i = f
  for x in xrange(0, len(tmp)):
    a[i] = tmp[x]
    i += 1
def MergeSort(a, f, l):
  if f< l:
    m = (l + f) / 2
    MergeSort(a, f, m)
    MergeSort(a, m+1, l)
    Merge(a, f, m, l)
if __name__ == '__main__':
  a = np.random.randint(0, 10, size = 10)
  print "Before sorting..."
  print "---------------------------------------------------------------"
  print a
  print "---------------------------------------------------------------"
  MergeSort(a, 0, a.size-1)
  print "After sorting..."
  print "---------------------------------------------------------------"
  print a
  print "---------------------------------------------------------------"

运行结果:

Python实现的归并排序算法示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
在Python中利用Pandas库处理大数据的简单介绍
Apr 07 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
解决python爬虫中有中文的url问题
May 11 Python
目前最全的python的就业方向
Jun 05 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
python队列Queue的详解
May 10 Python
python 寻找离散序列极值点的方法
Jul 10 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 #Python
Python中矩阵库Numpy基本操作详解
Nov 21 #Python
python GUI实例学习
Nov 21 #Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 #Python
django中的setting最佳配置小结
Nov 21 #Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 #Python
详解supervisor使用教程
Nov 21 #Python
You might like
PHP中SimpleXML函数用法分析
2014/11/26 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
智能钱包:Ekster
2019/11/21 全球购物
物流管理专业毕业生自荐信
2014/03/04 职场文书
临床专业自荐信
2014/06/22 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
收银员岗位职责范本
2015/04/07 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL