快速排序

算法导论上的快速排序采用分治算法,步骤如下:

      第一步,先去任意选取一个数字作为基准,可以去选取末位数字

     接下来,从数列的第一位开始,依次和选出来的这个数字比较;如果小于这个数,就将小的数交换到左边;最后达到小于基准数的都在左边,大于基准数的都在右边,分为两个数组

     然后分别对两个数组,重复上述第二个步骤

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

num=[1,-2,4,7,6,3,2,3]
quickSort(num,0,7)
print(num)
运行结果是:[ -2 , 1 , 2 , 3 ,3 , 4 , 6 , 7 ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值