我必須獲得未排序數(shù)組中的第 K 個最小元素。我不想對整個數(shù)組進行排序,而是只嘗試對包含第 K 個元素的子數(shù)組進行排序。然后我打印從 0 到 len(array) 的所有 K 個值array = [6,5,4,3,2,1]def quick_sort(lst, k): if len(lst) <= 1: return lst else: p = (lst[0] + lst[len(lst)-1])/2 left = [x for x in lst if x <= p] right = [x for x in lst if x > p] if k > len(left) -1 : k = k - len(left)+1 return quick_sort(right,k) else: return quick_sort(left, k) for i in range(len(array)): print(*quick_sort(array,i+1))我想要得到 1,2,3,4,5,6,但我的代碼得到 2,3,5,6,6,6。我需要改變什么?PS 主要思想不是對所有數(shù)組進行排序,也不使用 python 排序函數(shù)
1 回答

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
array = [6, 5, 4, 3, 2, 1]
def quick_sort(lst, k):
if len(lst) <= 1:
return lst
else:
p = (lst[0] + lst[-1]) / 2
left = [x for x in lst if x <= p]
right = [x for x in lst if x > p]
if k > len(left):
k = k - len(left)
return quick_sort(right, k)
else:
return quick_sort(left, k)
for i in range(len(array)):
print(*quick_sort(array, i + 1))
添加回答
舉報
0/150
提交
取消