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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
python interpolate插值实例
Jul 06 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
Python排序函数的使用方法详解
Dec 11 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php简单静态页生成过程
2008/03/27 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
关于query Javascript CSS Selector engine
2013/04/12 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
python pickle 和 shelve模块的用法
2013/09/16 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
python yield关键词案例测试
2019/10/15 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
PHP如何自定义函数
2016/09/16 面试题
经理职责范文
2013/11/08 职场文书
网络专业学生个人的自我评价
2013/12/16 职场文书
中学生思想品德评语
2014/12/31 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
企业百日安全活动总结
2015/05/07 职场文书
工作简历的自我评价
2019/05/16 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js