算法基本思想

常用算法概述

  • 穷举算法思想
  • 递推算法思想
  • 递归算法思想
  • 分治算法思想
  • 概率算法思想

穷举算法

穷举算法就是依赖于强大的计算机能力来穷举每一种可能的情况,从而达到穷尽每一种的可能,其效率低下,但是适用于一些没有明显规律可循的场合。

思想实现步骤:

  1. 对于一种可能,计算其结果
  2. 判断其结果是否是满足要求,如果不满足则进行执行下一个可能的情况,满足则表示找到正确答案

典型列子:穷举法求解鸡兔同笼的问题

递推算法

该算法适合于明显规律的场合,器根据已有的数据和关系,逐步推导而得到的结果,递推算法执行过程如下:

  1. 根据已知结果和关系,求解中间结果
  2. 判定是否达到要求,若是没有则继续1操作,直到找到正确答案

    典型例子:递推求解兔子产仔问题

递归算法

该算法可简化代码的编写,提高程序的课读性,但是效率上不是很高

递归算法就是不断的反复的调用自身来达到求解问题的方法,其核心是调用自身,将求解的问题分解为一个个相同的子问题,通过多次的求解,获得结果

递归的分类:

  1. 直接递归:在方法中调用自身
  2. 间接递归:间接的调用一个方法,如:a调用b,b调用a
  3. 尾递归:

注意递归必须有判断、返回值,要不就会一直递归下去,会造成内存溢出

递归代码上执行的时间较慢的原因:附加的方法调用增加了时间的开销,并且也会耗用大量的内存,递归太深可能会导致内存溢出,

典型问题:求阶乘问题

分治算法思想

该算法思想是将一个计算复杂的问题分为规模小的问题,然后求解小的问题,然后会和各个小问题,得到最终的答案。

思想实现的步骤:

  1. 对于一个规模为N的问题,若该问题可以容易的解决,则直接解决,否则往下
  2. 将N分解为M个规模较小的问题,这些子问题互相独立,

你可能感兴趣的:(数据结构与算法)