快排算法的深入理解

简述

  给每组数分成小、中、大 三种,利用递归思想进行排序。时间复杂度是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]))

 

 

图解

转载引用请标明出处,本博出自喝了少不如不喝的博客https://home.cnblogs.com/u/wangdadada
原文地址:https://www.cnblogs.com/wangdadada/p/12101277.html