《算法图解》日志七(python)(快速排序)

介绍

  • 快速排序,简称"快排"(是最快的排序算法’是平均情况下’。在平均情况下运行n个项目O(n log n)(大O符号)

原理

步骤

  1. 从数列中挑出一个项目称其为"基准"
  2. 重新排列数列,所有比基准小的项目摆在基准值前面;所有比基准值大的项目摆在基准值后面(相同的数可以摆在任何一边)'这种操作称为分区,这个分区执行完后这个基准值就会在数列的中心。
  3. 使用递归去执行前面的内容,直达数列的大小是一或者零.
开始
挑出基准
结束
排列数列
递归执行
数列=1,0

代码

def quick_sort(ser):
    if len(ser) < 2:
        return
    p = ser[0]
    L = [] 
    E = [] 
    R = [] 
    while len(ser) > 0:
        if ser[-1] < p:
            L.append(ser.pop())
        elif ser[-1] == p:
            E.append(ser.pop())
        else:
            R.append(ser.pop())
    quick_sort(L)
    quick_sort(R)
    ser.extend(L)
    ser.extend(E)
    ser.extend(R)
if __name__ == '__main__':
    s = [1, 7, 3, 5, 4]
    quick_sort(ser)
    print(ser)

小结

  • 快速排序
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值