快速排序Python实现,原地排序,节约内存,工程常用
def quick_sort_in_place(arr, low=None, high=None): 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]