Как изменить функцию sort () на более длинный код? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь создать код, который находит медианы

def find_median_five(L):
    L.sort()
    return L[len(L)//2]
def MoM(L, k): 
    if len(L) == 1: # no more recursion
        return L[0]
    i = 0
    A, B, M, medians = [], [], [], []
    while i+4 < len(L):
        medians.append(find_median_five(L[i: i+5]))
        i+=5
    if i < len(L) and i+4 >= len(L):
        medians.append(find_median_five(L[i:]))

    mom = MoM(medians, len(medians)//2)
    for v in L:
        if v < mom: A.append(v)
        elif v > mom: B.append(v)
        else: M.append(v)

    if len(A)>=k: return MoM(A,k)
    elif len(A)+len(M): return MoM(B,k-len(A)-len(M))
    else: return mom

n, k = (int(x)for x in input().split())
L = [int(x) for x in input().split()]
print(MoM(L, k))

Это мой текущий код, и он работает нормально. Но то, что я хочу сделать, это изменить часть def find_median_five (L). Поэтому я перешел на этот

def find_median_five(L):
    L_len=len(L)
    if(L==0): return None
    median=int(L_len/2)# 
    if (L_len%2==1): return L[median]
    else: return (L[median-1]+L[mendian])/2

, он вообще не работает, и я знаю, что мой измененный код испорчен. Но понятия не имею, где это исправить или изменить. не могли бы вы мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...