Python算法与数据结构——快速排序

Python算法与数据结构——快速排序

快速排序(Quick Sort)

  • 快速排序:快

  • 快速排序思路:

    1. 取一个元素p(第一个元素),使元素p归位;
    2. 列表被p分成两部分,左边都比p小,右边都比p大;
    3. 递归完成排序。
  • 快速排序的效率

    快速排序的时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)

  • 快速排序的问题:

    1. 最坏情况

      例子:列表为[1,8,7,6,5,4,3,2,9]

    2. 递归

# 快速排序代码
def  partition(li, left, right):
    tmp = li[left]
    while left < right:
        while left < right and li[right] >= tmp:   # 从右边找比tmp小的数
            right -= 1           # 往左走一步             
        li[left]  = li[right]    # 把右边的值写到左边空位上
        while left < right and li[left] <= tmp:  
            left += 1            # 往左走一步             
        li[right]  = li[left]    # 把左边的值写到右边空位上
    li[left] = tmp               # 把tmp归位
    return left

def quick_sort(li, left, right):
    if left < right:              # 至少两个元素
        mid = partition(li, left, right)
        quick_sort(li, left, mid-1)
        quick_sort(li, mid+1, right)


li = [5,7,4,6,3,1,2,9,8]
quick_sort(li, 0, len(li)-1)
print(li)

视频链接

https://www.bilibili.com/video/BV1mp4y1D7UP/?spm_id_from=333.788.videopod.episodes&vd_source=ae5e7f061ec995923ad8fa7e77ca3f92

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值