美文网首页
python-算法-4.快速排序/

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

作者: 时间之友 | 来源:发表于2019-12-01 14:37 被阅读0次

前一章深入介绍了递归,本章的重点是使用学到的新技能来解决问题。我们将探索分而治之(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.快速排序/

      本文链接:https://www.haomeiwen.com/subject/epcxgxtx.html