首页 > 其他分享 >快速排序

快速排序

时间:2023-05-24 10:57:25浏览次数:21  
标签:sort right temp nums list 排序 快速 left

参考实现

'''
快速排序
复杂度 O(nlogn)
'''


def partition(list, left, right):
    # 存第一个元素
    temp = list[left]
    while left < right:
        while list[right] >= temp and left < right:  # 右边找比 temp 小的元素
            right -= 1  # 左移
        list[left] = list[right]  # 右边值放到左边空位
        while list[left] < temp and left < right:
            left += 1
        list[right] = list[left]  # 左边值放到右边空位
    list[left] = temp  # 归位
    return left

def quick_sort(list,left,right):
    if left < right:#至少两个元素
        mid = partition(list,left,right)
        quick_sort(list, left, mid - 1)
        quick_sort(list,  mid + 1,right)

nums = [5, 7, 4, 6, 3, 1, 2, 9, 8]
print(nums)
quick_sort(nums, 0, len(nums) - 1)

print(nums)

 

标签:sort,right,temp,nums,list,排序,快速,left
From: https://www.cnblogs.com/wdh01/p/17386471.html

相关文章

  • 多台plc之间如何快速实现以太网无线连接?
    常规来说,多台plc要实现以太网无线连接,首先要先确定以太网线必须正确连接,并建立物理连接。然后需要在PLC端设置好IP地址,以使不同PLC以相同协议可以实现通信交流。最后是建立PLC端数据采集及交换系统,要求在PLC端设置一个多文件传输的文件夹,并建立一套文件的读写,搜索和处理程序,当某一P......
  • AI女友CyberWaifu快速搭建教程
     图片来源:非理性编程AI发展迅速,今天给大家分享一个QQAI女友CyberWaifu的保姆级部署教程。 项目地址:https://github.com/Syan-Lin/CyberWaifu有能力的同学不要忘记给作者点个赞哦~功能简介(截至发文时的)✅ 预定义的思考链:使AI可以进行一定的逻辑思考,进行决策。例如在文......
  • 插入排序
    参考实现'''插入排序初始是一个有序列表,每次从无序列表取一个元素放到合适的位置完成排序'''definsert_sort(list):foriinrange(1,len(list)):#此时i表示无序元素的索引temp=list[i]#新来的待排序元素j=i-1#有序元素......
  • 快速小波变换与快速傅里叶变换 Label: Research
    转载自https://www.zhihu.com/question/58814934/answer/160032303 作者:ZhaoZhang小波分析并没有"具有比傅里叶变化更好的性质",二者都骑在测不准原理的坎儿上,并没有谁比谁更好的情况,只存在具体问题中谁比谁更合适的情况.让我几句话讲明白小波这个事:我们无法同时测准一......
  • 快速打造图床-阿里云oss配置分享
    快速打造图床-阿里云oss配置分享1创建bucket1、打开oss控制平台,选择对象存储oss;2、点击创建bucket;3、根据提示创建bucket,如果是制作图床,选择将bucket设置为公开;4、进行bucket目录管理,新建目录;2oss秘钥管理点击获取accesskey管理,获取管理bucket的appid和appsecret;建议使用子用户进......
  • 快速开发框架是什么?好不好用?
    大家都知道,办公自动化已经成为当代职场中的普遍现象。但是,要想提高办公协作效率,做好企业内部的数据资源管理,还是需要下一番苦功夫的。如果寻找到合适的快速开发框架低代码开发平台来助力,也是一件恰当的事情。那么,快速开发框架究竟是什么?到底好不好用?在职场中能起到什么作用?带着这......
  • jdk11 及jdk8阿里云快速下载链接
    1jdk11及jdk8阿里云快速下载链接####1-jdk11linux版本jdk-11.0.7_linux-x64_bin.tar.gzhttps://code.aliyun.com/kar/oracle-jdk/raw/3c932f02aa11e79dc39e4a68f5b0483ec1d32abe/jdk-11.0.7_linux-x64_bin.tar.gz####2-jdk11macjdk-11.0.7_osx-x64_bin.tar.gzhttps://......
  • 十大经典排序算法总结
    排序算法可以分为:内部排序:数据记录在内存中进行排序。外部排序:因排序的数据很大,内存不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序、计数排序、桶排序。其中比较类......
  • Ubuntu 18.04 (Bionic) 简单快速的安装mongodb
    按步骤走,不带脑子式安装(注意4.0版本mongodb官方已经不再支持,以下代码中可以修改mongodb版本号安装,目前最新版为6.0,如果懒得改直接用也可以,文章后边第三章第一条代码会直接升级为最新版本mongodb):1.导入包管理系统使用的公钥wget-qO-https://www.mongodb.org/static/pgp/serv......
  • MSE 自治服务帮你快速定位解决 Dubbo 重复订阅导致 RPC 服务注册失败问题
    作者:子葵背景Dubbo是一款RPC服务开发框架,用于解决微服务架构下的服务治理与通信问题,具有易用、超大规模微服务实践、云原生基础设施适配、安全性等特点。但是不正确的Dubbo使用姿势可能会导致Dubbo应用以及ZooKeeper注册中心出现稳定性问题。近期,一线上客户发布时,由于Dub......