Python解法:实现快排

#考察排序那就手动实现以下快排 顺便熟悉下O(nlogn)  python中的sort()时间复杂度就是O(nlogn)
class Solution:
    def GetLeastNumbers_Solution(self, tinput, k):
        # write code here

        def qsort(arr, l, r):
            if l < r:
                p = partion(arr, l, r)#找到一个p 使得小于p的位于arr[l]的左侧,大于arr[l]的在p右侧
                qsort(arr, 0, p - 1)
                qsort(arr, p + 1, r)

        def partion( arr, l, r):
            key = arr[l]
            while l < r:
                while l < r and arr[r] >= key:
                    r -= 1
                arr[l], arr[r] = arr[r], arr[l]
                while l < r and arr[l] <= key:
                    l += 1
                arr[l], arr[r] = arr[r], arr[l]
            return l

        qsort(tinput, 0, len(tinput)-1)
        return tinput[:k] if len(tinput) >= k  else []
全部评论

相关推荐

02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务