美文网首页
算法复杂度

算法复杂度

作者: Fitz_Lee | 来源:发表于2018-06-06 22:46 被阅读7次

    算法重要特性

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

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

    • 输入:算法有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
    • 算法时间表示:
      上界(最坏)、下界(最好)、平均

    几个计算复杂度得例子:

    相关文章

      网友评论

          本文标题:算法复杂度

          本文链接:https://www.haomeiwen.com/subject/wydvhftx.html