-1
我跟着本書中的算法解決了這個問題。當我打印結果時,它是不正確的。該算法是完全按照書中 我的代碼找到第k個最小元素
import math
def quickSelect(A, k):
m = A[math.floor(len(A)/2)]
L = [i for i in A if i < m]
E = [i for i in A if i == m]
G = [i for i in A if i > m]
print(L)
print(E)
print(G)
if k <= len(L):
return quickSelect(L, k)
elif k <= (len(E) + len(G)):
return m
else:
return quickSelect(G, k- len(L) - len(E))
result = quickSelect([7, 14, 10, 12, 2, 11, 29, 3, 4], 4)
print(result)
什麼是您預期的結果? – Gumboy
我覺得第4個最小的應該是7對吧?但是當我運行時我得到2 –
你在第二次迴歸elif時的情況是錯誤的。 –