快速排序是一种常用的排序算法,比选择排序快的多,它的时间复杂度为O(nlogn)。
快速排序算法的核心思想是在一个乱序的数组中选择一个数值(基准值),遍历数组比这个基准值小的数据放到一个较小的数组中,比这个基准值大的数据放到一个较大的数组中,对较小的数组和较大的数组重复进行相同的找基准值,分离数组。直到数组中只剩下一个或者为空为退出条件。把所有排序好的数组组合起来就是最终的数组。
递归退出条件为:
def quicksort(array):
if len(array) < 2:
return array
python代码示例:
def quicksort(array):
if len(array) < 2:
return array #如果数组中只剩下一个数和基准值则返回数组
else:
pivot = array[0] #递归条件
for i in array[1:]:
if i <= pivot:
less.append(i)
for i in array[1:]:
if i > pivot:
greater.append(i)
return quicksort(less) + [pivot] + quicksort(greater)
list = [10,5,2,3]
print(quicksort(list))