在整理排序问题中,看到了快速排序这种算法,其整体的思想是,在要排序的数列里找出一个基准值,然后形成比基准值大和比基准值小的两种情况,也就生成了子数组,然后对这两个子数组进行快速排序,再将所得结果拼接到一起。
下面是快速排序的代码。
def quicksort(array):
if len(array) < 2: --------->单个数组时直接返回(这是递归的基准条件)
return array
else:
pivot = array[0] ------------->基准数
less = [i for i in array[1:] if i <= pivot] -------->小于基准数的子数组
greater = [i for i in array[1:] if i > pivot] -------->大于基准数的子数组
return quicksort(less) + [pivot] + quicksort(greater) ------->递归思想对子数组快速排序
print quicksort([10, 5, 2, 3])
我感觉这种思想运用了类似二分法和递归的思想,在算法中称之为D&C(divide and conquer)是一种分而治之的思想。