用python再论快排

今天看到用python实现的快排,虽然消耗了额外空间,但是真的很清新脱俗啊。。。

# -*- coding: UTF-8 -*-

def quicksort(array):
    if(len(array) <= 1):
        return array
    lower = []
    upper = []
    base = array.pop()
    for i in array:
        if i > base:
            upper.append(i)
        else:
            lower.append(i)
    return quicksort(lower) + [base] + quicksort(upper)


print(quicksort([5,2,7,9,12,3,7]))

运行结果:

E:\python_study>python 91.py
[2, 3, 5, 7, 7, 9, 12]

比base大的就丢到大的数组中,比base小的就丢到小的数组中。跟常规的交换位置实现的快排相比较,虽然消耗了额外的空间复杂度,但是思路清晰简单太多了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容