快速排序:从列表中选取一个基准值,将比基准值小的值放在一个列表,将比基准值大的值放在另一个列表,对两个子列表继续进行快速排序,直到子列表中只有一个元素为止。时间为O(nlogn)~O(n^2).
def quick_sort(arr):
# 列表中只有一个元素或为空,直接返回
if len(arr) < 2:
return arr
else:
# 选取基准值,此处选择列表的第一个值
pivot = arr[0]
less = [i for i in arr[1:] if i <= pivot]
greater = [i for i in arr[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
arr = [10,5,2,3]
print(quick_sort(arr))