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在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
python numpy存取文件的方式
Apr 01 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
python迭代器常见用法实例分析
Nov 22 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
python 爬虫如何实现百度翻译
Nov 16 Python
pytorch 运行一段时间后出现GPU OOM的问题
Jun 02 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 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
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
[JS]点出统计器
2020/10/11 Javascript
js判断变量是否空值的代码
2008/10/26 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
浅析JavaScript声明变量
2015/12/21 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Python中的闭包详细介绍和实例
2014/11/21 Python
python搜索指定目录的方法
2015/04/29 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
python使用knn实现特征向量分类
2018/12/26 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
python程序如何进行保存
2020/07/03 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
党政领导班子民主生活会整改措施
2014/09/18 职场文书
先进个人推荐材料
2014/12/29 职场文书
关爱空巢老人感想
2015/08/11 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python
linux下安装redis图文详细步骤
2021/12/04 Redis
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL