快速排序算法

"""
1、快速排序法最优时间复杂度:nlog2n == o(nlogn)
2、快速排序最坏的时间复杂度:n**2 === o(n**2),当你每一趟选择的中间值恰好最小(大)
3、快排怎么调优:
    想办法选择一个相对靠中间的值作为中间值
    1、随机法:每次从列表中随机选择一个值作为中间值;
    2、选择列表中第一个值,和最后一个值,和中间一个值,比较这三个只。从三个值中选择一个中间值作为快排的中间值
4、快排是稳定的吗?不稳定的。
"""

def quick_sort(myList,first,last):
    if first >= last:
        return
    mid = myList[first]
    start=first
    end=last
    while start<end:
        while start<end and myList[end] >= mid:
            end -=1
        myList[start] = myList[end]

        while start < end and myList[start] <mid:
            start += 1
        myList[end] = myList[start]

    myList[end] = mid

    quick_sort(myList,first,start-1)
    quick_sort(myList,start+1,last)

if __name__ == '__main__':
    l=[89,23,11,99,10,34,56,8]
    print(l)
    quick_sort(l,0,len(l)-1)
    print(l)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值