python快排

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# Author: json_steve


def quick_sort(li, start, end):
    if start >= end:
        return
    # 定义下标
    low = start
    hight = end
    # 标准最开始从左面开始
    mid = li[low]

    while low < hight:
        # 从右面开始比较并且向左移动,找到比mid小的数据放到low处
        while low < hight and li[hight] >= mid:
            hight -= 1
        # 循环结束,找到小于mid的值或者没有
        li[low] = li[hight]


        # 从左向右移动
        while low < hight and li[low] < mid:
            low += 1
        li[hight] = li[low]

    # 循环结束
    li[low] = mid
    # 递归继续排序
    # 递归继续排序左边和右边的数据
    quick_sort(li, start, low - 1)
    quick_sort(li, low + 1, end)

if __name__ == '__main__':
    l = [5,4,3,1,1]
    # 6 [5,4,4,8,9,7]
    quick_sort(l, 0, len(l)-1)
    print(l)

    # 最坏时间复杂度: O(n^2)
    # 最优时间复杂度: O(nlogn)
    # 稳定性: 不稳定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值