python快速排序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/7/14 14:43
# @Author : wutiande

import random

def partition(A:list,left:int,right:int)->int:
    """根据主元对区间进行划分"""

    temp = A[left] # 主元
    while left<right:
        while left<right and A[right]>temp:
            right -=1
        A[left] = A[right]
        while left<right and A[left]<=temp:
            left +=1
        A[right] = A[left]

    A[left] = temp # 把主元放到相遇的地方
    return left

def quickSort(A:list,left:int,right:int)->int:
    if left<right:
        pos = partition(A,left,right)
        quickSort(A,left,pos-1)
        quickSort(A,pos+1,right)

if __name__ == '__main__':
    A = [1,3,2,2,3,4,7,5,6]
    index = random.randint(1, len(A) - 1)
    print(index)
    """交换A[index]和A[left]"""
    A[0],A[index] = A[index],A[0]
    quickSort(A,0,right=len(A)-1)
    print(A)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值