快速排序

排序

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)
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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