这是快速选择的代码
def quickSelect(lst, k):
if len(lst) != 0:
pivot = lst[(len(lst)) // 2]
smallerList = []
for i in lst:
if i < pivot:
smallerList.append(i)
largerList = []
for i in lst:
if i > pivot:
largerList.append(i)
count = len(lst) - len(smallerList) - len(largerList)
m = len(smallerList)
if k >= m and k < m + count:
return pivot
print(pivot)
elif m > k:
return quickSelect(smallerList, k)
else:
return quickSelect(largerList, k-m-count)
我遇到的问题是它运行时没有错误或任何东西,但是当它自己完成时,我希望它向 python shell 输出一些东西(在这种特定情况下是列表的中位数),但我什么也没得到. 我在这里做错了吗?
至于我为 lst 和 k 输入的内容......
- lst = [70, 120, 170, 200]
- k = len(lst) // 2
我也尝试了一些不同的 k 值,但无济于事