快速排序(python)

本文介绍了一个快速排序算法的实现过程,包括分区函数的详细解释及其作用。通过递归调用快速排序函数,能够有效地对数组进行排序。文章还提供了一个具体的例子来展示排序的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def partition(A, p, r):
    '''
    对输入的数据进行边界判断

    Params:
        list[int] A, 需要排序的数组
        int p, 左边界
        int r, 右边界

    Returns:
        list[int] A, 已经划分好的数组
        int i+1, 边界, 左边的数据(不含A[i+1])小于A[i+1], 右边的数据(不含A[i+1])大于他
    '''
    if p>r:
        return A, p
    i = p-1
    j = p
    x = A[r]
    for j in range(p, r):
        if A[j]<=x:
            i += 1
            A[i], A[j] = A[j], A[i]
    #交换
    A[r],A[i+1] = A[i+1],A[r]
    #print(i+1, A)
    return A, i+1

def quick_sort(A, p, r):
    A, q = partition(A, p, r)
    #要对q进行边界判断
    if p<r and q>=0:
        A = quick_sort(A, p, q-1)
    return A
A = [3,2,1,22,13]
A = quick_sort(A, 0, len(A)-1)
print(A)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值