码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python 归并排序


    归并排序(Merge Sort)是一种典型的递归法排序。它把复杂的 排序过程分解成一个简单的合并子序列的过程。至于怎么得到这个子 序列,就得自己调用自己了。

    归并排序首先要做的就是将数列分成左右两部分(最好是等 分),然后将左、右两个子数列排序完毕后再合并到一起就成了一个 有序数列。左、右两个子数列怎么变成有序数列呢?那就回头调用自 己,再把子数列分成左、右两部分,然后把子子数列排序完毕后合并 成子数列……有点像那个著名的故事,山上有座山,山里有座庙,庙 里有两个和尚……。和尚讲故事是无穷无尽的,幸运的是数列的长度 即使再大也不会是无尽的。所以当子子子……序列分到不可再分割的 时候(最小的序列长度为1时),就可以返回开始合并数列了。逐步合 并子子子子……数列,到最后就得到了一个新的有序数列

    1. import timeit
    2. import random
    3. def randomList(n):
    4. '''返回一个长度为n的整数列表,数据范围[0,1000) '''
    5. iList = []
    6. for i in range(n):
    7. iList.append(random.randrange(1000))
    8. return iList
    9. def mergeSort(iList):
    10. if len(iList) <= 1:
    11. return iList
    12. middle = len(iList)//2
    13. left, right = iList[0:middle], iList[middle:]
    14. return mergeList(mergeSort(left), mergeSort(right))
    15. def mergeList(left, right):
    16. mList = []
    17. while left and right:
    18. if left[0] >= right[0]:
    19. mList.append(right.pop(0))
    20. else:
    21. mList.append(left.pop(0))
    22. while left:
    23. mList.append(left.pop(0))
    24. while right:
    25. mList.append(right.pop(0))
    26. return mList
    27. if __name__ == "__main__":
    28. iList = randomList(20)
    29. print(iList)
    30. print(mergeSort(iList))
    31. # print(timeit.timeit("mergeSort(iList)", "from __main__ import mergeSort,iList", number=100))

  • 相关阅读:
    多线程与线程池
    springcloud五大组件:Eureka:注册中心、Zuul:服务网关、Ribbon:负载均衡、Feign:服务调用、Hystix:熔断器
    AVL 树的初步认识与基本操作
    Mach-O详解(一) - 破题
    单机部署ELK + Filebeat 收集应用日志
    Surreal number
    [附源码]java毕业设计校园志愿者服务管理系统
    Metabase学习教程:入门-1
    每天五分钟机器学习:支持向量机通过核函数解决线性不可分的问题
    Java开发必须掌握的运维知识 (九)-- Docker容器监控信息可视化仪表:Grafana
  • 原文地址:https://blog.csdn.net/qq_40107571/article/details/127911620
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号