快速排序

排序

http://www.nowcoder.com/questionTerminal/2baf799ea0594abd974d37139de27896

快速排序,需要注意第一个left>right 为跳出条件,不是right>left。同时在递归的时候需要剔除掉中间排好的值,left lo-1 lo+1 right 否则会递归深度太大。

class Solution:
    def MySort(self , arr ):
        # write code here
        def  quick_sort(left,right,arr):
            if left>right:
                return
            target=arr[left]
            lo=left
            hi=right
            while lo<hi:
                while arr[hi]>target and lo<hi:
                    hi-=1
                while arr[lo]<=target and lo<hi:
                    lo+=1
                arr[lo],arr[hi]=arr[hi],arr[lo]
            arr[lo],arr[left]=arr[left],arr[lo]
            quick_sort(left,lo-1,arr)
            quick_sort(hi+1,right,arr)
            return arr
        if len(arr)==0:
            return arr
        return quick_sort(0,len(arr)-1,arr)
全部评论

相关推荐

只有一个苍穹外卖外加正在看黑马点评,可以找小厂实习吗,还有我的简历有什么大问题吗
Java抽象小篮子:感觉有点熟悉,问题1是学历,2是没实习经历,3是专业技能写得太少太少了(怎么写可以看我置顶帖),4是仅这一个项目找实习不够看。拷打完毕,简历怎么写可以看我置顶帖子
点赞 评论 收藏
分享
我就是0offer糕手:北大不乱杀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务