算法——快速排序
递归——什么是递归?
递归更容易理解——函数自己调用自己。

就像上图,在盒子堆里找一把钥匙。
递归能看的更加清楚,但在性能上并不占优势。
引入两个概念:基线条件和递归条件
不可能一直调用下去,当达到目的需要停止调用,这就需要一个基线条件。
而递归条件就是依旧继续调用的条件。
------------恢复内容开始------------
递归——什么是递归?
递归更容易理解——函数自己调用自己。

就像上图,在盒子堆里找一把钥匙。
递归能看的更加清楚,但在性能上并不占优势。
引入两个概念:基线条件和递归条件
不可能一直调用下去,当达到目的需要停止调用,这就需要一个基线条件。
而递归条件就是依旧继续调用的条件。
在引出一个栈的概念:
在数组和链表中,好像有一个待办事项清单,你可以将新的待办事项插入到清单的任何地方,也可删除任意一个待办事项。
一叠便条中, 插入的待办事项放在清单最前面----压入
读取待办事项时,只读取最上面的那个,完成了就将它删掉----弹出(读取并删除)
栈的一个特点就是 后进先出


当调用greet2()时,函数greet()只执行了一部分 又一个重点概念:调用另一个函数时,当前函数暂停并处于未完成状态
本章主题: 快速排序
先介绍一个D&C原理(一个思路):
①找出简单的基线条件
②不断分解问题,直到符合基线条件
比如说:要分一块土地,均匀分成方块,并且分出的方块要尽可能的大。怎么分?
比如一块长50宽25的土地,最大方块就是25 * 25 ,那么就是可以有两块
长1680米宽640米的,就有两个640 * 640 还有一块 640 * 400的
640*400里面又可以分出400 * 400 以此类推 到最后就是80*80
再比如求和 sum(1,2,3)就可以 1+sum(2,3) = 1 + 5
工作原理:首先接受一个列表,如果列表为空就返回0 不然 计算列表中除了第一个数以外的其他数字的总和,在与第一个数相加,再返回结果。
排序算法里面
最简单的数组就是不需要排序的数组,空数组或者只有一个元素的数组。-->基线条件
工作原理:首先,选一个元素作为基准值。 观察数组并分类。你就可以得到 一个所有都小于基准值的数字组成的子数组, 一个基准值 和一个所有都大于基准值的数字组成的子数组。
最终的数组就是 小于基准值的 + 基准值 + 大于基准值的
比方:
归纳条件:如果我站在一个横踢上,能把脚放到上一个横梯上。
基线条件:我站在了第一个横梯上。


浙公网安备 33010602011771号