python 快速排序_十大排序算法---快速排序(Python)

ac391c2b8a8dc754381dd25a872abe8b.png

快速排序算法是对冒泡排序的一种改进。它的基本思想是将需要排序的数据,以一个基准数,分成独立的两个部分。再把这两个部分,分别看做是需要排序的数据,再以各自的基准数,分成独立的两个部分,如此往复,直到数据无法继续分成两个部分,如下:

示例:将列表 [7, 4, 2, 17, 14, 8, 9, 10, 12, 16, 6]中的元素按从小到大

第一步.将列表的第一个元素索引赋值给变量low,最后一个元素索引赋值给变量high,以列表第一个元素为基准,将第一个元素赋值给变量x。如果列表high索引处的值比x大则将high减一,直到列表high索引处的值小于或等于x的值,就将列表索引high处的值赋值给变量low。

c7d45e1dac9528b656f96f75fa3c33b1.png

第二步,如果列表索引low处的值小于或等于x的值,就将low加一,直到列表high索引处的值大于x,就将列表索引low处的值赋值给列表索引high。

cb9c85e8f07a04a17ef034a56bb4146d.png

第三步、循环执行第一步、第二步,直到 low等于high,将x的值赋值给列表索引low处。并将low视为基准位置

b8b40ceacee7c235f42b621a8c80160a.png

第四步、以low为基准位置,将列表分成两个子列表即 [6 , 4 , 2] 和 [14, 8 , 9, 10, 12, 16, 17],将两个子列表分别执行第一步、第二步、第三步、第四步,直达无法再形成新的子列表

ef34d4251cd7c76efb1d9798837fcd88.png
# 快速排序python代码实现
def sub_sort(l, low, high):
    x = l[low] #基准
    while low < high:
        #如果后边的数比x大,high往前走,直到比x小
        while l[high] > x and low < high:
            high -= 1
        #如果后边的数比x小或相等,则将数赋值给l[low]
        l[low] = l[high]
        #如果前边的数比x小,则low往后走,直到比x大
        while l[low] < x and low < high:
            l[low] += 1
        #如果前边的数比x大,则将值赋值给l[high]
        l[high] = l[low]
    #将x插入最终位置
    l[low] = high
    #每一轮最终基准数确定的位置
    return low

def quick(l:list, low:int, high:int):
    if low < high:
        key = sub_sort(l, low, high)
        quick(l, low, key-1)
        quick(l, key+1, high)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值