首页 > 编程语言 >Python之快排算法

Python之快排算法

时间:2024-05-21 10:18:44浏览次数:25  
标签:Python QuickSort list 之快 算法 放入 append

快排算法的思路:

  1. 从list中取出下标为0的值
  2. 定义三个list
  3. 进行循环,大于list[0]放入一个A,小于的放入B,其他的放入C
  4. 拼接:A+C+B

代码实现:

list = [13, 8, 11, 17, 5, 6, 1, 1, 1]

def QuickSort(list):
    if len(list) <= 1:  # 判断如果小于等于1,则无需排序,直接返回即可
        return list
    else:
        key = list[0]  # 获取list中下标为0的值(取值第一个)
        llist, rlist, mlist = [], [], [key]  # 创建三个list
        for i in range(1, len(list)):  # 因已经定义了key,随意从1取值
            if list[i] < key:  # 小于key放在一起
                llist.append(list[i])
            elif list[i] > key:  # 大于key放在一起
                rlist.append(list[i])
            else:  # 其他的放在一起
                mlist.append(list[i])
    return QuickSort(llist) + mlist + QuickSort(rlist)  # 进行拼接

结果:

[1, 1, 1, 5, 6, 8, 11, 13, 17]

 

 


 

标签:Python,QuickSort,list,之快,算法,放入,append
From: https://www.cnblogs.com/brf-test/p/18203397

相关文章

  • 架构与思维:4大主流分布式算法介绍(图文并茂、算法拆解)
    0导读之前的文章中,我们介绍过分布式事务的基础知识,也了解了分布式场景下常见一致性问题和解决方案,对分布式锁和CAS模式有一定的了解,有兴趣的同学可以通过下面链接到作者的两篇相关文章。五种分布式事务解决方案(图文总结)高并发下的数据一致性保障(图文全面总结)1介绍本文聚......
  • Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
    一、写在开头在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized、Lock或者AtomicInteger;我们还学习过CAS算法,在那篇博文中我们同样也提及atomic。那么今天,我们就来好好学一学Atomic原子库,一个基于CAS算......
  • 一句话速通银行家算法
    一句话速通银行家算法:try分配资源,ifsafe()thencontinue;                     else归还资源并且sleep(当前任务).好,本文结束。hh其实并没有,接下来我将解释这句话以及银行家算法究竟是个啥。 ps:银行家算法是tryassign(), 而还有个锁的ap......
  • Python/Go 面试题目整理
    目录一、Python基础知识1.1可变与不可变数据类型1.8深浅拷贝1.2PEP8编程规范1.3匿名函数1.4装饰器1.5迭代器1.6生成器1.7面向对象编程思想1.7.1Python中的__new__和__init__的区别1.7.2反射1.7.3面向对象1.7.4鸭子类型1.7.5你对Python的继承怎么看?1.9GC机制1.10......
  • 蟒蛇书(Python编程:从入门到实践)第17章使用API 17.1.4处理API响应报错Caused by ProxyEr
    书上提供的原始代码:importrequests#执行API调用并存储响应url='https://api.github.com/search/repositories?q=language:python&sort=stars'headers={'Accept':'application/vnd.github.v3+json'}r=requests.get(url,headers=headers)prin......
  • 【Azure Storage Account】Azure 存储服务计算Blob的数量和大小的Python代码
    问题描述介绍一段Python脚本,可以在微软云中国区使用。用于计算AzureStorageAccount中Container中Blob类型文件的数量和大小,脚本中允许按照容器,层(热/冷/归档),前缀,软删除/非软删除来计算数量和容量大小,默认使用的时间为以Blob的最后修改时间作为参考。执行结果参考: 参数......
  • 代码随想录算法训练营第十三天 | 239. 滑动窗口最大值 347. 前k个高频元素
    239.滑动窗口最大值题目链接文章讲解视频讲解思路:使用单调队列,来维护有可能成为最大值的元素;   当窗口向右滑动时,判断移除的元素是否是队首元素如果是的话出队;   新加入的元素依次和队尾元素作比较,如果大于队尾元素则将队尾元素循环出队,这样可以保证队列中始终维持......
  • 机器学习中的正则化技术——Python实现
    在机器学习中,我们非常关心模型的预测能力,即模型在新数据上的表现,而不希望过拟合现象的的发生,我们通常使用正则化(regularization)技术来防止过拟合情况。正则化是机器学习中通过显式的控制模型复杂度来避免模型过拟合、确保泛化能力的一种有效方式。如果将模型原始的假设空间比作“......
  • python 国密sm2(C1C3C2) sm4(CBC) 加密 解密
    fromgmssl.sm4importCryptSM4,SM4_ENCRYPT,SM4_DECRYPTimportbinasciiimportbase64fromgmsslimportsm2,func#GMSSLforPython#安装pipinstallgmssl#keycode='101231221289195374403401962572899'key='1012312212891953'iv=......
  • Python-无服务器微服务构建指南-全-
    Python无服务器微服务构建指南(全)原文:zh.annas-archive.org/md5/3c97e70c885487f68835a4d0838eee09译者:飞龙协议:CCBY-NC-SA4.0前言这本书将让您对微服务和无服务器计算有很好的理解,以及它们与现有架构相比的优缺点。您将对部署完整的无服务器堆栈的威力有所认识,不仅在节......