O Dividir Para Conquistar
Por: Moabe Barbosa • 12/3/2021 • Trabalho acadêmico • 352 Palavras (2 Páginas) • 161 Visualizações
def maiorElemento(lista, n):
n = len(lista) - 1
pivo = lista[int(n/2)]
aux = []
n2 = 0
for j in range(0, n):
if lista[j] >= pivo:
aux.append(lista[j])
n += 1
if n + 1 == 2:
return max(lista[0], lista[1])
elif n + 1 == 1:
return lista[0]
else:
maiorElemento(aux, n2)
print(maiorElemento([1,5,2,7,3,4], 6))
def QuickSelection(A, k):
r = len(A) - 1
p = A[r]
i = -1
for j in range(0, r):
if A[j] >= p:
i = i + 1
temp = A[j]
A[j] = A[i]
A[i] = temp
print(A)
i += 1
temp = A[r]
A[r] = A[i]
A[i] = temp
print("-----", i, "------")
print(A)
if i == r - k + 1:
return A[i]
elif i > r - k + 1:
return QuickSelection(A[:i], k - (r - i + 1))
else:
return QuickSelection(A[i + 1:r + 1], k)
A = [1, 2, 5, 4, 10, 3]
print("Lista", A)
k = int(input("K-ésimo: "))
print("O", k, "º menor elemento da lista", A, "é", QuickSelection(A, k))
...