快速排序
排序
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)