1.理解分而治之的思路
可以简单的理解为找规律,递归其实也是找规律。
2.快速排序法思路
a.选第一个数作为标准,比它大的放右边,比它小的放左边
b.左边的小的和右边的大的,再重新按照a来重复执行,书中的列表式写的挺好,需要记住。
c.到啥时候停止重复呢?当里面的数字小于2时,也就是说只有一个或者没有的时候!
代码实现:
def quick(list):
if len(list) < 2:
return list[0]
else:
qq = list[0]
less = [i for i in list[1:] if i < qq ]
more = [i for i in list[1:] if i >= qq]
# 这里写法不错
return list[less] + [qq] + list[more]
3.时间复杂度:
O(n*n) 这是最糟糕的情况
O(n*log n) 这是平均情况
网友评论