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])
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • python 十大经典排序算法 (博客园) https://www.cnblogs.com/wuxinyan/p/...
    长风哥哥阅读 3,897评论 0 5
  • 大写的转 目录 [冒泡排序][鸡尾酒排序] [选择排序] [插入排序][二分插入排序][希尔排序] [归并排序] ...
    Solang阅读 5,748评论 0 16
  • 概述 因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总...
    清风之心阅读 4,037评论 0 1
  • 分治策略 本文包括分治的基本概念二分查找快速排序归并排序找出伪币棋盘覆盖最大子数组 源码链接:https://gi...
    廖少少阅读 5,889评论 0 7
  • 本文的最新版本位于:https://github.com/iwhales/algorithms_notes转载请注...
    import_hello阅读 5,439评论 1 17

友情链接更多精彩内容