def quicksort(array):
if len(array) < 2: #基线条件
return array
else:
pivot = array[0]
less = [i for i in array[1:] if i <= pivot] # array[1:] 去掉表中第一个元素并读取后面的
greater = [j for j in array[1:] if j > pivot]
return quicksort(less) + [pivot] + quicksort(greater) #认真详细 写写运算过程就明白了,正是有了if那两句,quicksort(less) 才不会陷入死循环
print(quicksort([6,10,5,3]))
if len(array) < 2: #基线条件 return array 如果输入的列表的长度小于2,这说明这个列表只有一个或0个元素,至此可以停止比较了,故为基线条件。
return quicksort(less) + [pivot] + quicksort(greater)
标红部分为调用quicksort函数,即对小于 pivot 的那部分(less) 和 大于pivot的那部分(greater) 进行快速排序(即重复之上的步骤)。