NO.3 尝试探究python的经典算法-快速排序(二)快速排序

经过上一章对分而治之思想和递归的思考,这里我正式开始来研究快速排序
快速排序有非常明显的分而治之的思想在其中,首先我们来对一个列表进行排序,对排序算法来说,最简单的列表是怎么样的呢?那就是根本不需要排序的数组
如果一个列表是空的或者是只有一个数,根本不用排序

def quicksort(array):
    if len(array)<2:
        return array

只有两个元素的也很简单,直接进行比较就行了
那么有三个元素呢,当然我们依然可以使用循环进行比较

def sort(array):
    for i in range(len(array)):
        for j in range(len(array) - 1):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]
    return array

当然,这样计算的速度是非常慢的,在计算长数据的时候由于要遍历每一个数而导致效率地下,所以现在我们使用快速排序来解决这个问题

def quicksort(array):
    if len(array)<2:
        return array
    else:
        pivot=array[0]
        less=[i for i in array[1:] if i<=pivot]
        greater=[i for i in array[1:] if i>pivot]
        print(array)
        print(less)
        print(greater)
        return quicksort(less)+[pivot]+quicksort(greater)

我先把代码贴出来

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值