python-算法-4.快速排序/

前一章深入介绍了递归,本章的重点是使用学到的新技能来解决问题。我们将探索分而治之(divide and conquer,D&C)—— 一种著名的递归式问题解决方法。


4.1 分而治之

用递归求一个 列表所有元素的和

def sum(list):     # 重点是找到基线条件 递归条件
    if list == [ ]:
        return 0
    return list[0] + sum(list[1:])

快速排序法,其中用到二分查找的方法:

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])

你可能感兴趣的:(python-算法-4.快速排序/)