1.分而治之
- 一种著名的递归式问题解决方法。
- 包括两个步骤:1)找出基线条件(比如数组为空或数组中只包含一个元素);2)不断将问题分解(缩小规模),直到符合基线条件。
2.快速排序
- 快速排序速度取决于选择的基准值
- 运行时间:平均情况下O(n*logn);最糟情况下:O(n^2)
def quicksort(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 quicksort(less) + [pivot] + quicksort(greater)
if __name__ == '__main__':
print(quicksort([10,5,2,3]))