概述
快速排序的整体思想是分治法
一开始寻找一个基准值,在我的这份代码中是取分区的最后一个值s,通过一次操作,将小于s的数放在s左侧,大于s的数放在s右侧。(这个操作在代码中体现为_partition()函数
)
我觉得理解好这个函数加上有分治迭代的思想就能掌握快速排序了
这样,通过s将原来的列表分为了左右两个子列表(左边都小于s,右边都大于s)。那么再对左右两个子列表同样进行上边的操作(这里有迭代的思想),就这样一直排下、分下去,直到最后分区只有一个数就结束了。
这里说的只是思想,具体操作如下代码
python示例代码
"""
快速排序 - 选择枢轴对元素进行划分,左边都比枢轴小右边都比枢轴大
"""
def quick_sort(origin_items, comp=lambda x, y: x <= y):
items = origin_items[:]
_quick_sort(items, 0