Python实现归并和快排,请大家参考
归并
def merge(left, right): i, j = 0, 0 result = [] while i < len(left) and j < len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result += left[i:] result += right[j:] return result def merge_sort(lists): if len(lists) <= 1: return lists num = len(lists)//2 left = merge_sort(lists[:num]) right = merge_sort(lists[num:]) return merge(left, right)
快排
def quick_sort(lists): less = [] piv = [] more = [] if len(lists) <= 1: return lists p = lists[0] for i in lists: if i < p: less.append(i) elif i > p: more.append(i) else: piv.append(i) less = quick_sort(less) more = quick_sort(more) return less + piv + more
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java并发编程笔记--volatile与synchronized关键字
合理使用并发 单线程程序并不一定比多线程程序性能差 1) 当任务较轻,执行任务的消耗没有开启多线程消耗多时;2) 当上下文切换带来的消耗较高时;3) 当多线程的同步处理代价过大时; 并发的优势 1) 提高系统的吞吐率:能够合理的利用IO等待时间等情况;2) 提高响应性:防止因为处理业务等待导致响应时间过长;3) 充分利用多核CPU资源:单线程程序对多核CPU使用效率不高;4) 最小化系统资源的使用:线程共享资源,避免了多进程造成的资源浪费;5) 简化程序结构:现实世界是并行的,多线程能够更容易的表达现实世界; 如何减少上下文切换? 1) 无锁并发编程:不同的线程尽可能减少共享数据的范围,或者不共享数据;对于共享数据,可以考虑将数据分片,操作时,不同的线程访问不同的分片,从而减小数据共享范围;2) CAS算法:使用CAS算法,通过乐观锁代替悲观锁,减少不必要的锁;3) 最少线程:线程并非越多越好,使用合适的线程数,避免产生大量的上下文切换;4) 协程:在单个线程中实现多任务调度,并在单个线程里维护多个任务间的切换; 如何避免死锁? 1) 避免一个线程同时获取多个锁;2) 避免一个线程在锁...
- 下一篇
Fiddler 抓包高级进阶篇-天罗地网抓包大法
阅读本篇内容之前,建议先对基础熟悉下 本文内容纲要如下 喜欢的话关注收藏评论转发比心么么哒!Python学习交流719-139-688内有大量的项目开发和新手教学视频PDF书籍的千人大群等着你来加入 1、模拟限速 2、篡改数据 3、重定向功能 4、发送自定义请求,模拟小型接口测试 5、APP端抓包 一、限速 背景:进行日常测试时通常网络情况都比较好(内网),所以有时会忽略在低速或网络状况不好的情况下系统页面的表现(前端是怎么处理的) 手机可以用2G、3G、4G,也是一种方式,但这都是网络模式,而Fiddler可以设置上传和下载的延时时间,这种控制非常灵活,可以帮助我们模拟低速网络情况下页面、APP的显示与交互情况,比如响应时间过长时是否有弹出网络不好的提示、页面crash以及显示错乱、session是否一致等。 设置限速时间 (1)打开 【Rules--
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池