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)