def quick_sort_in_place(arr, lowNone, highNone): if low is None: low 0 if high is None: high len(arr) - 1 def partition(arr, l, r): pivot arr[l] # 选最左侧元素作为基准 i l j r while i j: # j向左找小于pivot的数 while i j and arr[j] pivot: j - 1 arr[i] arr[j] # i向右找大于pivot的数 while i j and arr[i] pivot: i 1 arr[j] arr[i] arr[i] pivot # 将pivot放到正确位置 return i if low high: pos partition(arr, low, high) quick_sort_in_place(arr, low, pos - 1) # 递归处理左半部分 quick_sort_in_place(arr, pos 1, high) # 递归处理右半部分 # 测试 if __name__ __main__: data [5, 2, 9, 3, 7, 6, 1, 8, 4] quick_sort_in_place(data) print(data) # [1, 2, 3, 4, 5, 6, 7, 8, 9]