快速排序

递归写法的时候,主要是要考虑递归退出的条件,left和right坐标比较
另外要先从右边找,再从左边找


class Solution(object):


    def quickSort(self, arr, left, right):

        if left > right:
            return
        anchor = arr[left]
        i = left
        j =right

        while(i != j):

            while(arr[j]>=anchor and j>i):
                j -= 1

            while(arr[i]<=anchor and j>i):
                i += 1

            if i < j:
                arr[i],arr[j] = arr[j],arr[i]

            if i == j:
                arr[i],arr[left] = arr[left],arr[i]
        self.quickSort(arr,left,i-1)
        self.quickSort(arr,i+1,right)



if __name__ == '__main__':
    sol = Solution()
    sort_arr = [5,1,2,7,3,10]
    result = sol.quickSort(sort_arr,0,len(sort_arr)-1)
    print sort_arr

你可能感兴趣的:(快速排序)