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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
Python查看多台服务器进程的脚本分享
Jun 11 Python
Python导入txt数据到mysql的方法
Apr 08 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
Python函数参数操作详解
Aug 03 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
详解Matplotlib绘图之属性设置
Aug 23 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 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简单实现上一页下一页功能示例
2016/09/14 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
validator验证控件使用代码
2010/11/23 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
材料物理专业大学毕业生求职信
2013/10/15 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
四风存在的原因分析
2014/02/11 职场文书
会走路的树教学反思
2014/02/20 职场文书
经典导游欢迎词
2015/01/26 职场文书
升职自荐书
2019/05/09 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
灵能百分百第三季什么时候来?
2022/03/15 日漫