1.提出问题
快速排序某个列表中的元素,按照从小到大的顺序进行排列。
2.算法分析
基于分治算法策略,设定一个基准线(pivot),将数据与基准线对比,分成大于和小于部分,把小于基准数的元素放到左边,把大于基准数的元素放到右边,通过递归操作,不断通过分治算法实现排序,不断拆分,直到将序列拆到只剩一个或者零个元素的时候排列结束。
3.实现代码
def quick_sort(n):
if len(n) < 2:
return n
else:
pivot = n[0]
left = [x for x in n[1:] if x < pivot]
right = [x for x in n[1:] if x > pivot]
return quick_sort(left) + [x for x in n if x == n[0]] + quick_sort(right)
if __name__ == "__main__":
test_list = [10, 23, 4, 67, 6, 9, 16, 33, 15, 65, 34]
print(quick_sort(test_list))
输出结果:
[4, 6, 9, 10, 15, 16, 23, 33, 34, 65, 67]
总结:通过一次排序将要排序的数据分割成独立的两个部分,其中一部分比另一部分都要小,按照此方法再对这两部分分别进行快速排序,不断递归,最终达到目的。