Python——快速排序法

——每次都使用第一个数作为基准数

原理及过程

1.首先 我们选择一个数列lista = [18,12,4,65,24,9,66,15,88,13,21,25,16,1,43]

2.我们取第一个数 [18] 为基准数 base = lista[0]

3.我们再新建两个列表方便排列分别为:左子数组 less = [ ] 右子数组 greater = [ ]

4.将小于 [18] 的数放到左子数组less中,将大于 等于[18] 的数放到右子数组greater中:
less=[12,4,9,15,13,16,1] base=[18] greater=[65,24,66,88,21,25,43]

5.再重复以上步骤将左子数组和右子数组进行排列
less = [4, 9,1] [12] [15,13,16]
greater = [24,21,25,43] [65] [66,88]
6. 最后将所有数组相加

[18,12,4,65,24,9,66,15,88,13,21,25,16,1,43]
第一次排序
[12,4,9,15,13,16,1] [18] [65,24,66,88,21,25,43]
第二次排序
[4, 9,1] [12] [15,13,16] [18] [24,21,25,43] [65] [66,88]
第三次排序
[1] [4] [9] [12] [13] [15] [16] [18] [21] [24][25,43] [65] [66,88]

代码如下:

lista = [18,12,4,65,24,9,66,15,88,13,21,25,16,1,43]
def quick(lista):
    if len(lista) >= 2: #如果列表的长度小于等于1
        #左,子数组
        less = []
        # 右,子数组
        greater = []
        # 基准数
        base = lista[0] #选择第一个值为分界元素
        lista.remove(base)
        # 对原数组进行划分
        for x in lista:
            if x < base:
                less.append(x)
            else:
                greater.append(x)
    else:
        return lista
    #递归调用
    return quick(less) + [base] + quick(greater)

print(quick(lista))
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值