zoukankan      html  css  js  c++  java
  • Java数据结构(六)—— 时间复杂度和空间复杂度

    时间复杂度和空间复杂度

    度量一个程序执行时间的两种方法

    1. 事后统计的方法

      两个问题:

      1. 相对设计的算法的运行行能进行评测,需要实际运行程序

      2. 所得时间的通缉令依赖于计算机的硬件、软件等环境因素

    2. 事前估计法

      通过分析某个算法的时间复杂度来判断那个算法更优

    时间频度

    一个算法花费的时间与算法中语句的执行此时成正比,语句执行次数叫时间频度(语句频度),记为T(n)

    对于时间频度,可以忽略常数项,低次项和系数

    时间复杂度

    算法中的基本操作语句的重复执行次数时问题规模n的某个函数用T(n)表示,若某个辅助函数,使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常熟,则称f(n)是T(n)同数量级函数,记作T(n) = O(f(n)),称O(f(n))为算法的渐近时间复杂度,简称时间复杂度

    T(n)不同,但时间复杂度可能相同

    计算时间复杂度的方法

    • 常数1代替运行时间中的所有加法常数

    • 修改后的运行次数函数中,只保留最高阶项

    • 取出最高阶项的系数

    image-20201027131249222

    image-20201027131433959

    平均时间复杂度和最坏时间复杂度

    1. 平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,该算法的运行时间

    2. 最坏情况下的时间复杂度称为最坏时间复杂度,一般讨论时间复杂度军事最坏情况下的时间复杂度

    image-20201027131808028

    算法的空间复杂度

    image-20201027131934392

     所有源码都可在gitee仓库中下载:https://gitee.com/vvwhyyy/java_algorithm

  • 相关阅读:
    idea 快捷键
    上传代码
    maven 打包
    mysql 通过测试'for update',深入了解行锁、表锁、索引
    mysql中,手动提交事务
    java 发送邮件
    zk脑裂
    malloc,free和new,delete之间的区别
    sizeof和strlen区别
    字符串常量问题
  • 原文地址:https://www.cnblogs.com/whystudyjava/p/14043299.html
Copyright © 2011-2022 走看看