快排

#! /usr/bin/env python

# -*- coding: utf-8 -*-

def quick(list):

    if len(list) < 2:

        return list

 

    tmp = list[0]  # 临时变量 可以取随机值

    left = [x for x in list[1:] if x <= tmp]  # 左列表

    right = [x for x in list[1:] if x > tmp]  # 右列表

    return quick(left) + [tmp] + quick(right)

 

li = [4,3,7,5,8,2]

print quick(li)  # [2, 3, 4, 5, 7, 8]

 

#### 对[4,3,7,5,8,2]排序

'''

[3, 2] + [4] + [7, 5, 8]                 # tmp = [4]

[2] + [3] + [4] + [7, 5, 8]              # tmp = [3] 此时对[3, 2]这个列表进行排序

[2] + [3] + [4] + [5] + [7] + [8]        # tmp = [7] 此时对[7, 5, 8]这个列表进行排序

'''

 

注:快排代码实现(类似于二叉树 递归调用)----右手左手一个慢动作,右手左手一个慢动作重播

 

posted @ 2020-08-12 08:15  Python代  阅读(78)  评论(0编辑  收藏  举报