递归写法的时候,主要是要考虑递归退出的条件,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
网友评论