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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
Python中无限元素列表的实现方法
Aug 18 Python
python实现比较两段文本不同之处的方法
May 30 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
pyqt 多窗口之间的相互调用方法
Jun 19 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
基于Python测试程序是否有错误
May 16 Python
Django返回HTML文件的实现方法
Sep 17 Python
AI:如何训练机器学习的模型
Apr 16 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下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
php多重接口的实现方法
2015/06/20 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
使用Python解析JSON数据的基本方法
2015/10/15 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
两道JAVA笔试题
2016/09/14 面试题
作文批改评语大全
2014/04/23 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
少年犯观后感
2015/06/11 职场文书
初中美术教学反思
2016/02/17 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python