python 快速排序 代码实现

news/2024/5/19 21:14:05 标签: 算法, 快速排序, 排序算法, 数据结构, python

快速排序
是对冒泡排序算法的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

1.挑选基准值:从数列中挑出一个元素,称为"基准"(pivot)
2.分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准值的排序就已经完成;
3.递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。

递归到最底部的判断条件是数列的大小是零或一,此时该数列显然已经有序。

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

python">def parttion(arr,low,high):
    # 最小元素索引
    i = (low-1)
    pivot = arr[high]

    for j in range(low,high):

        # 当前元素小于等于pivot
        if arr[j] <= pivot:

            i += 1
            arr[i],arr[j] = arr[j],arr[i]

    arr[i+1],arr[high] = arr[high],arr[i+1] 
    return ( i+1 )     


# arr[]  排序数组
# low   起始索引
# high  结束索引

# 快速排序排序函数
def quickSort(arr,low,high):
    if low < high:
        pi = parttion(arr,low,high)

        quickSort(arr,low,pi-1)
        quickSort(arr,pi+1,high)

arr = [10,7,9,1,5]
n = len(arr)
quickSort(arr,0,n-1)
print("排列后的数组:",arr)

http://www.niftyadmin.cn/n/1429712.html

相关文章

window 10 电脑 自动 定时 关机

设置 电脑自动关机 1.WindowsR 打开运行命令框 2.在运行命令框中输入 “Shutdown.exe -s -t 3600”&#xff0c;这里表示60分钟后自动关机&#xff0c;“3600”代表60分钟。设置完成后会弹出一个倒计时关机的对话框。需要多久关机就自己修改“3600”为需要关机的秒数&#xf…

小米的面试过程及面试题~

本文以一位童鞋的面试经历为例&#xff0c;为大家详细介绍一下小米公司的面试过程和遇到的面试题&#xff0c;供大家参考。 1.自我介绍 这个不用说了&#xff0c;自己介绍一下自己。 2.数据库My Sql和SQL Server以及Oracle的区别&#xff1f; 他是看了我写了一篇这样的博客…

自动化框架 结构 简单理解

自动化框架 ​ 可以理解为一个完整环&#xff0c;也可以理解为让测试脚本运行的一整套环境&#xff0c;平台&#xff0c;或者其他什么。 大致结构包含以下几个点 ​ 1.数据池:测试数据的存储管理 &#xff08;1&#xff09;log&#xff08;日志文件&#xff09;、report&…

Java 反射机制浅析

来源&#xff1a;http://www.cnblogs.com/gulvzhe/ Java反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调…

接口测试用例怎么写? 模板示例 2021

接口测试用例 字段含义用例ID编号项目名称测试项目所属模块模块接口名称哪个接口用例标题用例作用请求方式GET/POST或者其他方式请求RUL地址URL地址请求参数需要的参数前置条件前置条件是什么&#xff0c;可以没有预期结果预期的响应实际结果实际的响应测试结果是否通过测试人…

MySQL数据库之JDBC入门

来源&#xff1a;Java联盟 今天我们一起入门JDBC 1&#xff09;什么是JDBC JDBC&#xff08;Java DataBase Connectivity&#xff09;就是 Java 数据库连接&#xff0c;说白了就是用 Java 语言来操作数据库。原来我们操作数据库是在控制台使用 SQL 语句来操作数据库&#xff…

趣图:新手程序员第一次做项目的过程

程序员调 Bug 的写照 有哪些新手程序员不知道的小技巧&#xff1f; 微信公众号&#xff1a;javafirst 扫码关注免费获取更多资源

excel 保留小数点俩位后 计算值求和结果错误

问题 (&#xffe3;_&#xffe3;|||) 自动求和数值就是对不上账&#xff0c;然后手工计算了下发现自动求和不对&#xff0c;NND。 问题原因 自动求和之前的数值是输入的公式 原始金额*0.006 然后设置格式保留小数位俩位。然后自动求和。 1.问题出在这里 自动求和的时候他用…