python 快速排序算法

python 快速排序算法随机数快速排序 python 实现

快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列, 然后递归地排序两个子序列。

步骤为:

a.挑选基准值:从数列中挑出一个元素,称为”基准”(pivot);

b.分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元 素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准 值的排序就已经完成;

c.递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。 递归到最底部的判断条件是数列的大小是零或一,此时该数列显然已经有序。

选取基准值有数种具体方法,此选取方法对排序的时间性能有决定性影响。

代码实现:

# -*- coding: UTF-8 -*- import random num = range(0, 100) Number = random.sample(num, 100) print(Number) def partition(number, low, high): i = (low - 1) # 最小元素索引 pivot = number[high] for j in range(low, high): # 当前元素小于或者等于pivot if number[j] <= pivot: i = i + 1 number[i], number[j] = number[j], number[i] [number[i + 1], number[high]] = number[high], number[i + 1] return i + 1 # number[] --> 排序数组 # low -->起始索引 # high --> 结束索引 # 快速排序函数 def quickSort(number, low, high): if low < high: pi = partition(number, low, high) quickSort(number, low, pi - 1) quickSort(number, pi + 1, high) n = len(Number) quickSort(Number, 0, n - 1) print("排序后的数列") for i in range(n): print (Number[i]) 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221299.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午6:27
下一篇 2026年3月17日 下午6:27


相关推荐

  • 汇总:国内6款OpenClaw一键部署与实测(包括首款龙虾APP)

    汇总:国内6款OpenClaw一键部署与实测(包括首款龙虾APP)

    2026年3月13日
    2
  • O2O网站

    O2O网站

    2021年10月14日
    47
  • win7 计算机定时关机脚本,定时关机命令,教您怎么使用命令行定时关机「建议收藏」

    win7 计算机定时关机脚本,定时关机命令,教您怎么使用命令行定时关机「建议收藏」在设置定时关机前,我们有必要了解一下定时关机是怎么实现的,定时关机功能由文件夹中的Shutdown.exe程序来控制的,然后我们给他加入一系列命令就可以实现定时关机了。下面,小编给大家讲解使用命令行定时关机的技巧。有时候,下载一个东西,但是又要关闭电脑睡觉了,但是又想等东东下载好了,才去睡觉,想想如果能定时关机就好了。作为程序员的我,有时候就是作践自己啊,那怎么使用命令行定时关机?下面,小编给大家…

    2022年5月14日
    65
  • 侦察系列之匿名邮箱(短信)网站「建议收藏」

    侦察系列之匿名邮箱(短信)网站「建议收藏」1、ProtonMail:免费的加密电子邮箱https://mail.protonmail.com/2、mfk.app免费临时电子邮件地址https://www.8164.cc/3、隐私短信在线短信验证码接收码平台https://www.yinsiduanxin.com4、云短信验证码接收平台https://www.bfkdim.com/5、临时edu邮箱EDUMAILhttps://mail.mjj.edu.ge/6、Snapmail.cc临时邮箱https://www.s

    2022年10月10日
    6
  • mac idea 激活码【最新永久激活】

    (mac idea 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S3…

    2022年3月26日
    1.2K
  • java开发面试自我介绍模板_java面试自我介绍3篇

    java开发面试自我介绍模板_java面试自我介绍3篇java 面试自我介绍 3 篇 java 面试自我介绍篇一 我叫赵 我的同学更都喜欢称呼我的英文名字 叫 六月的意思 是君的谐音 我来自安徽的市 在 21 年我以市全市第一名的成绩考上了大学 学的是计算机科学专业 不过 在大 我没法再像高中一样总是名列前茅了 到目前为止 我的综合学分排名是 4 左右 在专业课程方面 我 c 的编程能力比较强 一年以前就开始自学 java 在班级里是最早开始学 java 的 我参与过我们

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号