1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| def quickSort(arr,low,high): # 快速排序,排序的边界条件 low比high小
def resort(arr,low,high): # 这里的数组中,目标数已经放到的最右边 # 现在需要把大于目标值的数据放到右边
flag=low-1
for j in range(low,high+1): # 双指针 if arr[j]<=arr[high]: flag+=1 arr[flag],arr[j]=arr[j],arr[flag]
return flag
def random_index(arr,low,high): # 当然还需要进行一些小的操作 index=(low+high)
# 默认左边都是最小的 arr[index],arr[high]=arr[high],arr[index] return resort(arr,low,high)
if low<high: # 每次按照队列排序 # 需要返回标杆的下标 index =random_index(arr,low,high)
# 之后还需要继续分解 quickSort(arr,low,index-1) quickSort(arr,index+1,high) return arr
|