快排算法的深入理解

简述

  给每组数分成小、中、大 三种,利用递归思想进行排序。时间复杂度是n*log2n  (log2n代表2的多少次方等于n),其中log2n代表组数、n*log2n代表所有数的对换次数所用的时间。

实例说明

代码:

 

def kuaiPai(num):
    da,zhong,xiao = [],[],[]
    #如果没有条件条件限制会报错“IndexError: list index out of range”
    #新的递归da或xiao数组赋给num;
    #小于1说明是最后一次递归return num而不是最后一次递归的数据
    if len(num)<1:
        return num
    pivo = num[0]
    for i in range(len(num)):
        if num[i] > pivo:
            da.append(num[i])
        elif num[i] < pivo:
            xiao.append(num[i])
        else:
            zhong.append(num[i])
    less = kuaiPai(xiao)
    more = kuaiPai(da)
    return less+zhong+more
print(kuaiPai(num=[8,2,3,1,5,2]))

 

 

 

图解

posted on 2019-12-26 11:52  喝了少不如不喝  阅读(289)  评论(0编辑  收藏  举报

导航