算法复杂度

算法重要特性

  • 确定性: 算法中每一种运算都是确定的,有明确的定义,运算执行是清楚得无二义。

  • 能行性: 每一种运算能由人用纸和笔在有限的时间内完成。

  • 输入:算法有0或多个输入,算法开始前提前给出

  • 输出:算法又一个或多个输出,同输入又某种特定的关系

  • 有穷性: 总是在执行有穷步得运算后终止

凡是算法必须满足以上5中特性

算法的主要内容

  • 如何设计算法
  • 如何表示算法 (Spark等算法描述语言)
  • 如何确认算法 (合法得输入可以得到正确得结果)
  • 如何分析算法 (计算时间和存储空间定量分析)
  • 如何测试程序 (调试和作时空分布图,调试只能指出错误,但不能证明他们不存在错误;做时空分布图用各种数据执行调试来确认算法得正确性,准确的计算出结果所需要花费得时间和空间。)

分析算法

算法的时间复杂度:

  • 复杂度计算时,基本运算定义为加减乘除,均为固定常数时间
  • 多项式复杂度 1 < log(n) < n < nlog(n) < n^2 < n^3
  • 指数级复杂度 2^n < n! < n^n
  • 当数量级增大时指数级复杂度增长迅速,所以应尽可能降低为多项式复杂度以节省运算时间。
logn n nlogn n^2 n^3 2^n
0 1 0 1 1 2
1 2 2 4 8 4
2 4 8 16 64 16
4 16 64 256 4096 65536
5 32 160 1024 32768 4294967296
  • 算法时间表示:
    上界(最坏)、下界(最好)、平均

几个计算复杂度得例子:

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

推荐阅读更多精彩内容

  • 对于一个给定的算法,我们要做两项分析。第一是从数学上证明算法的正确性,而在证明算法是正确的基础上,第二部就是分析算...
    一个人在路上走下去阅读 5,905评论 1 7
  • 关键词:算法分析、算法复杂度、时间复杂度、空间复杂度 相关文章详细解释了这些内容,以下是个人理解与部分摘录 在cs...
    本地路过阅读 3,717评论 0 0
  • 时间复杂度 一个算法花费的时间,与算法中语句的执行次数成正比例。哪个算法中语句执行次数多,它花费时间就多。我们把一...
    几千里也阅读 3,805评论 0 1
  • 时间复杂度 时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没...
    小慕先森阅读 3,229评论 0 0
  • 算法复杂度分析 算法复杂度基本定义 算法复杂度分析基于以下四条定义: 如果存在常数c与$n_{0}$使$N \ge...
    月见樽阅读 3,973评论 0 0