Python快速排序的实现

本文介绍了Python中快速排序的实现原理,通过递归将列表切割成单元素,然后详细阐述了长度为2和3的列表如何进行排序,并提供了具体的实现代码,利用基准值将数字分为小于和大于两部分进行递归操作。
摘要由CSDN通过智能技术生成

一. 首先介绍快速排序实现的原理

最简单的数组肯定就是只有一个元素的数据组,例如a = [2],这个时候列表的长度为1,因此根本无需进行排序,可以直接进行返回.此时列表长度为1的条件将被定义为基线条件,即递归函数的出口。

因此,此时如果使用递归来进行排序的话,只要根据基准将待排序的列表逐步切割。把列表变成只有一个元素的列表,然后返回即可。

二. 基本思路

此时设定需要进行比较大小的基准数字b[0],将列表中所有的数字和b[0]进行比较,将大的数字放在基准数字的后面,小的数字放在基准数字的前面。

1. 长度为 2 的列表

这里随机给定一个列表,例如 b = [9,2]

  • 此时列表 b中的数字除了9以外就只有一个比9小的数字2,这个时候只需要将2放到9的前面:[2] —[9]

2.长度为 3 的列表

继续随机给定一个列表 ,例如c = [6,4,9]

  • 现在给定比较的数值基准c[0],即6,遍历c[1:],然后将小于6的放到6的前面,然后将比6大的数字放到6的后面。
  • 即[4]—[6]—[9]

三. 实现的代码

  • 定义lessgreater,将小于基准值的array[0]的数值放在less列表里面,大于基准值的array[0]的数值放在greater列表里面。
  • 返回的是quickSort(less) + [pivot] + quickSort(greater),将分好的数值继续进行递归。
def quickSorst(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if i <= pivot]
        greater = [i for i in array[1:] if i > pivot]
        return quickSorst(less) + [pivot] + quickSorst(greater)

运行:

a = [9,8,7,6,444,31,3]
b = quickSorst(a)
print(b)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值