import random

def mergeSort(seq, reverse=False):

#把原列表分成两部分

mid = len(seq) // 2

left, right = seq[:mid], seq[mid:]

#根据需要进行递归

if len(left) > 1:

left = mergeSort(left)

if len(right) > 1:

right = mergeSort(right)

#现在前后两部分都已排序

#进行合并

temp = []

while left and right:

if left[-1] >= right[-1]:

temp.append(left.pop())

else:

temp.append(right.pop())

temp.reverse()

result = (left or right) + temp

#根据需要进行逆序

if reverse:

result.reverse()

return result

#测试

for i in range(100000):

#生成随机测试数据

reverse = random.choice((True, False))

x = [random.randint(1,100) for i in range(20)]

y = sorted(x, reverse=reverse)

x = mergeSort(x, reverse)

if x!=y:

print('error')

附:Python程序的__name__属性作用与用法演示视频

Python版归并排序算法(附Python程序__name__属性用法演示视频)相关推荐

  1. Python版插入排序算法

    问题描述:在插入排序算法中,把所有元素分为前面的已排序序列和后面的未排序序列两部分,每次处理未排序序列中的第一个元素,将其插入到前面已排序序列中的合适位置,从而不停地扩大已排序序列并缩小未排序序列,直 ...

  2. Python版快速排序算法

    Python版冒泡排序算法请参考Python版冒泡法排序算法 Python版选择排序算法请参考Python版选择排序算法 from random import randint def quickSor ...

  3. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]

    1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统 ...

  4. 用python实现归并排序算法

    归并排序是一种常见的排序算法,它采用分治策略,将待排序的序列分成若干个子序列,每个子序列都是有序的,然后再将这些有序的子序列合并成一个有序的序列. 具体来说,归并排序的过程可以描述为以下几步: 将待排 ...

  5. python:实现丢番图方程算法(附完整源码)

    python:实现丢番图方程算法 from __future__ import annotationsdef diophantine(a: int, b: int, c: int) -> tup ...

  6. Python:实现GrabCut算法(附完整源码)

    Python:实现GrabCut算法 img = cv2.imread('data.jpg')img = cv2.resize(img, (224, 224), interpolation=cv2.I ...

  7. Python:实现sha1算法(附完整源码)

    Python:实现sha1算法 import argparse import hashlib # hashlib is only used inside the Test class import s ...

  8. Python:实现寻峰算法(附完整源码)

    Python:实现寻峰算法 import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks ...

  9. 图解主成分分析PCA算法(附Python实现)

    0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用."深"在详细推导算法模型背后的数学原理:"广"在分析多个机器学习模型:决策树.支持 ...

最新文章

  1. 写出一个超强的lighttpd模块
  2. 最特殊的乡村医生,现在要去香港上市敲钟
  3. hive null 值比较大小
  4. Linux下安装配置EasyPR中文车牌识别系统
  5. 模拟撞击_正确看待小行星威胁!NASA模拟8年后300米小行星撞击地球试验
  6. [python] redis 模块 -- 实现 python 与 Redis 数据库的结合
  7. docker安装的PHPFPM容器Redis扩展
  8. 魔力Python--if __name__ == '__main__' 的理解
  9. 美法院起诉黑客组织成员 为暴雪服务器攻击者
  10. ​Linux进程管理工具
  11. Altium Designer 15 PCB图层详解
  12. java程序设计基础_陈国君版第五版_第四章习题
  13. 上海地图全图可放大_上海地图下载-上海地图全图高清版大图-地之图下载
  14. CIS坐标系统与投影变换
  15. 电脑和微信怎么发邮件到别人邮箱,企业邮箱如何发email给别人
  16. 1 实验9_7_设计函数int getVowel(char str[],char vowel[]); (100分)
  17. 网页链接分享到微信里的海报制作
  18. share_ptr智能指针使用详解
  19. 如何使用graphpad做柱形图_Graphpad绘制柱形图&散点图
  20. 显示iPhone可用字体代码

热门文章

  1. oracle容器部署,Linux docker oracle 部署
  2. 研华运动控制卡接线图_研华运动控制卡 SoftMotion 技术简介
  3. workerman mysql git_swoole和workerman哪个更易开发?
  4. mysql显示表格前五行,深入浅出MySQL勘误表
  5. Job 存储和持久化 (第三部分)
  6. 最新android proguard下载
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的养老院管理系统
  8. fs.readfile 显示html,从fs.readFile获取数据
  9. java 混淆编译_贴一段自动编译java,并混淆编译的代码
  10. 把javabean复制到另一个javabean 使用BeanUtils.copyProperties(a,b) 复制