常用算法概述
- 穷举算法思想
- 递推算法思想
- 递归算法思想
- 分治算法思想
- 概率算法思想
穷举算法
穷举算法就是依赖于强大的计算机能力来穷举每一种可能的情况,从而达到穷尽每一种的可能,其效率低下,但是适用于一些没有明显规律可循的场合。
思想实现步骤:
- 对于一种可能,计算其结果
- 判断其结果是否是满足要求,如果不满足则进行执行下一个可能的情况,满足则表示找到正确答案
典型列子:穷举法求解鸡兔同笼的问题
递推算法
该算法适合于明显规律的场合,器根据已有的数据和关系,逐步推导而得到的结果,递推算法执行过程如下:
- 根据已知结果和关系,求解中间结果
判定是否达到要求,若是没有则继续1操作,直到找到正确答案
典型例子:递推求解兔子产仔问题
递归算法
该算法可简化代码的编写,提高程序的课读性,但是效率上不是很高
递归算法就是不断的反复的调用自身来达到求解问题的方法,其核心是调用自身,将求解的问题分解为一个个相同的子问题,通过多次的求解,获得结果
递归的分类:
- 直接递归:在方法中调用自身
- 间接递归:间接的调用一个方法,如:a调用b,b调用a
- 尾递归:
注意递归必须有判断、返回值,要不就会一直递归下去,会造成内存溢出
递归代码上执行的时间较慢的原因:附加的方法调用增加了时间的开销,并且也会耗用大量的内存,递归太深可能会导致内存溢出,
典型问题:求阶乘问题
分治算法思想
该算法思想是将一个计算复杂的问题分为规模小的问题,然后求解小的问题,然后会和各个小问题,得到最终的答案。
思想实现的步骤:
- 对于一个规模为N的问题,若该问题可以容易的解决,则直接解决,否则往下
- 将N分解为M个规模较小的问题,这些子问题互相独立,