zoukankan      html  css  js  c++  java
  • 算法时间复杂度分析

    1.算法复杂度的几种情况:

    • 算法完成工作最少需要多少基本操作,即最优时间复杂度
    • 算法完成工作最多需要多少基本操作,即最坏时间复杂度
    • 算法完成工作平均需要多少基本操作,即平均时间复杂度

    由于最优时间复杂度和平均时间复杂度都无法涵盖所有情况下算法的完成执行的可能,故在实际运用中,更关注最坏时间复杂度。

    2.算法时间复杂度的几条基本计算规则

    • 基本操作,即只有常数项,认为其时间复杂度为O(1)
    • 顺序结构,时间复杂度按加法进行计算
    • 循环结构,时间复杂度按乘法进行计算
    • 分支结构,时间复杂度取最大值
    • 判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
    • 在没有特殊说明时,算法的时间复杂度都是指最坏时间复杂度

    3.常见时间复杂度

    • 执行次数 非正式术语
      10 O(1) 常数阶
      2n+1 O(n) 线性阶
      n2+n+1 O(n2) 平方阶
      10+log2n O(logn) 对数阶
      n+nlog2n+10 O(nlogn) 线性对数阶
      n3+n2+n+1 O(n3) 立方阶
      2n O(2n) 指数阶
      注意,经常将log2n(以2为底的对数)简写成logn

     4.常见时间复杂度之间的关系

    • 所消耗的时间从小到大
      O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

  • 相关阅读:
    hdu2795-Billboard(线段树应用好题)
    AC自动机模板
    kmp模板
    字符串Hash模板
    (可持久化)带修莫队的实现方法
    HZNU1544众数问题
    NOIP2006提高组第二题-金明的预算方案
    Python学习笔记
    (模板)唯一分解定理
    Java 7 源码学习系列(二)——Enum
  • 原文地址:https://www.cnblogs.com/yueyun00/p/10246109.html
Copyright © 2011-2022 走看看