def quick_sort(arr): # 1 如果列表内的元素为1或小于1 则返回本身 if len(arr) <= 1: return arr # 2 求出中位数 pivot = arr[len(arr) // 2] # 选择中间元素作为枢纽元 # 3 定义三个列表 用来存储 大于小于 等于中位数的列表 less, equal, greater = [], [], [] ''' less: 小于 equal: 等于 greater: 大于 ''' # 4 将值做分类 放到不同的列表中 for num in arr: if num < pivot: # 分类 小于中位数的放到小于列 less.append(num) elif num == pivot: # 等于中位数的放到中位数列 equal.append(num) else:# 大于中位数的放到大于列 greater.append(num) return quick_sort(less) + equal + quick_sort(greater) # 示例用法 arr = [5, 2, 9, 1, 7, 6, 3] sorted_arr = quick_sort(arr) print(sorted_arr)