相关疑难解决方法(0)

“中位数”算法的Python实现

我已经在 python 中编写了这个中位数算法的实现,但它似乎没有输出正确的结果,而且对我来说它似乎也不是线性复杂性,知道我在哪里偏离轨道吗?

def select(L):
    if len(L) < 10:
        L.sort()
        return L[int(len(L)/2)]
    S = []
    lIndex = 0
    while lIndex+5 < len(L)-1:
        S.append(L[lIndex:lIndex+5])
        lIndex += 5
    S.append(L[lIndex:])
    Meds = []
    for subList in S:
        print(subList)
    Meds.append(select(subList))
    L2 = select(Meds)
    L1 = L3 = []
    for i in L:
        if i < L2:
            L1.append(i)
        if i > L2:
            L3.append(i)
    if len(L) < len(L1):
        return select(L1)
    elif len(L) > len(L1) + 1:
        return select(L3)
    else:
        return L2
Run Code Online (Sandbox Code Playgroud)

该函数的调用方式如下:

L = list(range(100))
shuffle(L) …
Run Code Online (Sandbox Code Playgroud)

python algorithm

5
推荐指数
1
解决办法
9003
查看次数

标签 统计

algorithm ×1

python ×1