题解 | #最小的K个数#

最小的K个数

https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

为了巩固相关的知识点,快速排序的相关知识,同时由于算法的时间复杂度的需求
我们在实现过程中使用快速排序进行解答
class Solution:
    def GetLeastNumbers_Solution(self , input, k: int)  :
        # write code here
        # 使用相关的排序方法为,快速排序
        array = input
        array_new = self.quick_sort(array, 0, len(array) - 1)
        return array_new[:k]

    def quick_sort(self, array, start, end):
        if start >= end:
            return array   # 注意递归算法的
        middle_key = array[start]
        low = start
        high = end
        while low < high:
            while low < high and array[high] >= middle_key:
                high-=1
            array[low] = array[high]
            while low < high and array[low] <= middle_key:
                low+=1
            array[high] = array[low]
        # 退出循环
        array[low] = middle_key
        self.quick_sort(array, start, low-1) # 注意这里的start和end的相应的变化
        self.quick_sort(array, low+1, end)
        return array


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务