簡體   English   中英

第 K 個最小的快速排序 python

[英]K-th smallest quick sort python

我必須得到未排序數組中的第 K 個最小元素。 不是對整個數組進行排序,我只是嘗試對包含第 K 個元素的子數組進行排序。 然后我打印從 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 主要思想是不對所有 arrays 進行排序,也不使用 python 排序函數

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM