python 快速排序 递归思想

小雷恶补
欢迎交流vxin:lxq2390968687

def quick_sort(arry):
    part_quick_sort(arry, 0, len(arry)-1)#局部快排
    return arry

def part_quick_sort(arry, L, R):
    if L >= R:#序列中无记录或只有一条记录
        return
    i = L
    j = R
    x = arry[i]#取出第一个元素给x,其他元素与x进行比较,将序列分为左右两半
    while i < j:
        #取出第一个元素后,第一个位置空,从最右端扫描元素与x比较,找到小于x的元素将其放入空位置
        while i < j and arry[j] > x:#后边值大于x,则j减小
            j -= 1
        if i < j:
            arry[i] = arry[j]
            i +=1
        # 此时右边的位置为空,从左端i++开始扫描元素与x比较,找到小于x的元素将其放入空位置
        while i < j and arry[i] < x:#前边值小于x,则i减小
            i +=1
        if i < j:
            arry[j] = arry[i]
            j -=1
    arry[i] = x
    part_quick_sort(arry, 1, i-1)#递归处理左半部分
    part_quick_sort(arry, i+1, R)#递归处理右半部分

a = [1,5,3,4,2,6]
a = quick_sort(a)
print(a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值