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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作

微信收款码
支付宝收款码