快速排序的另一种简单实现

 快速排序的原理:在已知的数列中选择一个数字作为基准,与剩余的数作比较,将比这个基准小的数放在左边,比其大的数放在右边;然后将基准左右两边的数列重复以上步骤,直到基准两边只有一个数字为止;

def quickSort(num, l, r):
    if l >= r:  # 如果只有一个数字时,结束递归
        return
    flag = l
    for i in range(l + 1, r + 1):  # 默认以第一个数字作为基准数,从第二个数开始比较,生成索引时要注意右部的值
        if num[flag] > num[i]:
            num[flag],num[i]=num[i],num[flag]
            flag += 1
    quickSort(num, l, flag - 1)  # 将基准数前后部分分别递归排序
    quickSort(num, flag + 1, r)


num = [1, -2, 4, 7, 6, 3, 2, 3]
quickSort(num, 0, 7)
print num
快速排序的一般实现方法如下
def quicksort(a,l,r):
    if l>=r:
        return
    key=l
    i=l
    j=r
    while i<j:
       while i<j and a[key]>a[i]:
           i+=1
       while i<j and a[key]<=a[j]:
           j-=1

       a[i],a[j]=a[j],a[i]


    a[key],a[i]=a[i],a[key]
    quicksort(a, l, key-1)
    quicksort(a, key+1,r)
    return a


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值