快速排序法

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)  这是平均情况

你可能感兴趣的:(快速排序法)