快速排序 quick sort
一共有8大排序算法,不能一口吃个胖子,我一个算法写一个博客。
原理:随机取一个数,然后把小于这个数的数放在一边,大于这个数的数放在另一边。对两边的数重复这个操作,直到两边的数只剩一个。
思考:产生一个中间结果,然后继续对中间结果进行重复操作,直到达到某个条件。那么可以看出这里要用到递归。
def quick_sort(lst):
less = []
greater = []
if not lst: # lst 为空时不再递归
return lst
el = lst.pop() # 吐出最后一项
for i in lst: # 和剩余的未吐出的项比较
if i < el:
less.append(i)
else:
greater.append(i)
return quick_sort(less) + [el] + quick_sort(greater)
# [el] 记得要用 list,因为元素不能直接和 list 进行 + 操作。
网友评论