Python实现快速排序

快速排序是一种时间复杂度较低O(log n )、应用较多的排序算法。它采用分而治之策略(Division&Conquer Method, D&C),递归地解决问题。

快速排序算法的基本步骤如下:

    选取列表一个数字作基准(pivot)

    遍历列表中的每个元素,比基准小的元素放在基准左边的列表中,比基准大的元素放在右边

    递归地调用函数,对左边和右边的列表采取同样的策略,直到排序完成

算法代码如下:

# Python使用新变量时不用声明类型,因此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]

        return quicksort(less) + [pivot] + quicksort(greater)

最后一行要对less和greater分别递归而不是直接 quicksort(less + [pivot] + greater),因为后者每次递归时列表长度没有减小,无法满足基线条件,无限循环。

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

友情链接更多精彩内容