1 def quickSort(arr, left=None, right=None): 2 left = 0 if not isinstance(left, (int, float)) else left#如果left不属于int和float范围,那么left=0,属于就还是原来的值 3 right = len(arr)-1 if not isinstance(right, (int, float)) else right 4 if left < right: 5 partitionIndex = partition(arr, left, right)#找到第一次 分成左边右边元素的 界限 6 quickSort(arr, left, partitionIndex-1)#然后排 左边的元素,按照同样的方法 7 quickSort(arr, partitionIndex+1, right) 8 return arr 9 10 def partition(arr, left, right): 11 pivot = left#pivot是 基准,用来把大于 和小于基准的数隔开, 通常选择最左边的元素 12 index = pivot+1 13 i = index 14 while i <= right: 15 if arr[i] < arr[pivot]:#如果碰到比基准小的,那么需要换位置 16 swap(arr, i, index)#把下标为i的元素 和下标为index的元素对调 17 index+=1#index为需要确定的位置 18 i+=1 19 swap(arr, pivot, index-1)#最后再把基准和 找到的最后一个小于基准的数换个位置,那么基准所在位置就是 小的大的 分隔线 20 return index-1 21 22 def swap(arr, i, j): 23 arr[i], arr[j] = arr[j], arr[i]