python写归并排序
时间:2022-07-24
本文章向大家介绍python写归并排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
python写归并排序
开始今天内容之前,先给大家推荐一款审核利器,goinception,下载地址:
https://github.com/hanchuanchuan/goinception 自从inception闭源之后,对于SQL审核的工具都是各家开发定制各自的,这个项目goinception的审核结果和inception几乎相同,大家可以作为参考,看看是否可以直接拿来定制自己的审核工具。
回来比较晚了,写点python程序吧,python实现归并排序。
归并排序大家可能都不陌生,它的主要逻辑如下:
1、将一个序列拆分为两个序列
2、将这两个子序列按照第一步的方法再进行拆分
3、等到所有的序列都拆分为1个元素的时候,再两两进行排序,合并成一个有序序列即可。
整个排序思路,有一个先分再合的过程,如下:
# 这个函数用来将两个有序序列合并成一个有序序列
def merge(a, b):
c = []
h = j = 0
while j < len(a) and h < len(b):
if a[j] < b[h]:
c.append(a[j])
j += 1
else:
c.append(b[h])
h += 1
# 如果某个序列被合并完毕,则补齐另外一个序列的剩余值即可
if j == len(a):
for i in b[h:]:
c.append(i)
else:
for i in a[j:]:
c.append(i)
return c
def merge_sort(lists):
if len(lists) <= 1:
return lists
middle = len(lists)//2
# 进行拆分
left = merge_sort(lists[:middle])
right = merge_sort(lists[middle:])
return merge(left, right) #递归的思路
if __name__ == '__main__':
a = [10,14,33,2,39,8,41]
print (merge_sort(a))
运行结果如下:
[2, 8, 10, 14, 33, 39, 41]
Process finished with exit code 0
执行时间复杂度:N*logN
有帮助的话还希望点下再看哈
- 碎片化 | 第四阶段-53-hibernate持久化session问题解决-视频
- 入门webpack(下)
- 巨头们关注的实时Web:发展与相关技术
- 碎片化 | 第四阶段-54-hibernate-spring整合流程-视频
- OpenDaylight Lithium版本简单应用及流表操作指南
- 碎片化 | 第四阶段-55-OpenSessionInViewFilter组件配置解决session问题-视频
- 入门Webpack(上)
- 碎片化 | 第四阶段-56-ManyToOne和OneToMany映射关系-视频
- 基于网络流量的SDN最短路径转发应用
- 碎片化 | 第四阶段-57-hibernate二级缓存-视频
- NoSQL篇 | NoSQL从小白到码神 之 Redis篇
- Neutron和ONOS集成实践
- 基于OpenDaylight和OVSDB搭建VxLAN网络
- 史上最强----机器学习经典总结---入门必读
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决PIL透明的图片放在新图片上报错
- Dissonance 使用(一)
- Dissonance 使用(三)
- 从代码角度看各类子域名收集工具
- Shiro-550 PoC 编写日记
- k8s代码走读---client-go编程交互基础
- 故障恢复:一次底层超融合故障导致的异常处理
- JavaSE语法
- 链表:听说过两天反转链表又写不出来了?
- 汇总:MySQL 8.0 运维便捷命令
- 链表:一道题目考察了常见的五个操作!
- 性能测试必备知识(11)- 怎么理解内存中的Buffer和Cache?
- 神经网络-感知器(二):Python代码实现
- Kylin、Druid、ClickHouse 核心技术对比
- 在线教育系统开发中,如何实现作业功能字体自定义?