• 时间复杂度和空间复杂度


    1.引言

    2.算法优劣分析

    3.时间复杂度度量方法

    4.常见的算法时间复杂度

    5.求解时间复杂度的步骤

    6.空间复杂度

    1.引言

    最近没有写博客,一半是比较忙,较大的一半因素是变懒了,日复一日,我觉得有必要重拾起来,坚持一下,为下一个目标做些事情。

    2.算法优劣分析

    两个方面

    2.1 从数学上证明算法的正确性,即 能够得到正确的结果

    2.2 分析算法的时间复杂度, 即程序执行时间随着输入规模的增长而增长的量级

    3.时间复杂度度量方法

    3.1 事后统计方法

    弊端:

    性能评测,需要根据算法编写程序并实际运行;

    易受计算机硬件,软件的影响,忽略算法本身的优势

    3.2 事前分析估算方法

    一个高级语言编写的程序在计算机上运行消耗的时间取决于下列因素:

    算法采用的策略和方法

    编译产生的代码质量

    问题的输入规模

    机器执行指令的速度

    一个算法是由控制结构(顺序,分支和循环3种)和原操作(指固有数据类型的操作)组成的,则算法的时间取决与两者的总和。

    通常的做法,从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作的重复执行次数作为算法的时间量度。

    3.2.1 时间频度

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

    3.2.2 时间复杂度

    在时间频度中,n称为问题的规模,当n不断变化时,T(n)也会不断变化,但我们想知道变化的规律,由此引入时间复杂度的概念。

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

    4.常见的算法时间复杂度

     常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)

    5.求解时间复杂度的步骤

    5.1 找出算法中的基本语句

    5.2 计算基本语句的执行次数的数量级

    5.3用大O记号表示算法的时间性能

    6.空间复杂度

    指一个算法在计算机上所消耗的存储空间,包含三个方面

    6.1 算法本身所占用的存储空间

    6.2  算法的输入输出所占用的存储空间

    6.3 算法在运行过程中临时占用的存储空间

    参考链接:https://blog.csdn.net/zolalad/article/details/11848739

  • 相关阅读:
    Fastjson
    react 使用createContext、Consumer 及 useContext 、Class.contextType父子组件共享数据
    使用useReducer 实现 todoList
    react中 useMemo与useCallback使用
    react17 函数组件 使用 better-scroll2.0 封装方法 及 使用
    react 执行 yarn build ,无法直接打开dist文件下的index
    react-redux 持久数据存储
    document.body.removeChild 获取到 symbol 标签
    react嵌套路由,并设置默认子路由
    Vagrant环境下配置node_exporter、mysqld_exporter、prometheus、grafana
  • 原文地址:https://www.cnblogs.com/jdzhang/p/10921104.html
Copyright © 2020-2023  润新知