代码
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
print(quick_sort([3,6,8,10,1,2,1]))
快速排序算法是一种基于分治的排序算法,它的基本思想是将数组分成两个子数组,然后递归地对这两个子数组进行排序。
上面的代码中,首先使用递归函数 quick_sort() 对数组进行排序。如果数组的长度小于等于 1,则直接返回数组。否则,选择数组的中间元素作为枢轴,并将数组分成三个部分:小于枢轴的元素、等于枢轴的元素、大于枢轴的元素。最后,使用递归调用将左右两个子数组排序,并将结果拼接起来。
添加注释
def quick_sort(arr):
# 基线条件:如果数组的长度小于等于 1,则直接返回数组
if len(arr) <= 1:
return arr
# 选择枢轴,并将数组分成三个部分
pivot = arr[len(arr) // 2] # 选择数组中间元素作为枢轴
left = [x for x in arr if x < pivot] # 小于枢轴的元素
middle = [x for x in arr if x == pivot] # 等于枢轴的元素
right = [x for x in arr if x > pivot] # 大于枢轴的元素
# 递归调用将左右两个子数组排序,并将结果拼接起来
return quick_sort(left) + middle + quick_sort(right)
# 测试程序
print(quick_sort([3,6,8,10,1,2,1]))