美文网首页
数据结构和算法-时间和空间复杂度

数据结构和算法-时间和空间复杂度

作者: JailbreakLifer | 来源:发表于2019-10-17 11:08 被阅读0次

时间复杂度

在数据结构和算法中,有两种方法来衡量时间复杂度

  • 事后统计法
  • 大O复杂度表示法

事后统计法

把代码实际跑一遍,然后分析,统计和监控算法执行的时间和占用的内存大小。但是这种方法有很大的局限性

  1. 测试结果非常依赖测试环境:
    测试环境的硬件不同会对结果有很大的影响,比如相同的代码在不同的处理器结果肯定不同
  2. 测试结果受测试数据的规模大小的影响:
    比如对同一个排序算法,待排序数据的有序度不一样,排序的执行时间就会有很大的差别。另外,如果测试数据过小,也可能无法真是反应算法的性能,比如对于小规模的数据排序,插入排序可能反倒比快速排序要快

大O时间复杂度表示法

时间复杂度的分析方法:

  1. 只关注循环执行次数最多的一段代码
  2. 加法法则:总复杂度等于量级最大的那段代码的复杂度
  3. 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积

常见的时间复杂度分析

常见复杂度分析

复杂度的量级有可以分为 多项式量级非多项式量级

  • 非多项式量级:O(2^n) 和 O(n!),非常低效的算法,执行时间会随数据的规模急剧增加
  • 多项式量级:剩下的

1. O(1)

一般情况下,只要算法的代码中,不存在循环语句,递归,即使代码有很多,时间复杂度也是O(1)

O(logn), O(nlogn)

在采用大O复杂度分析的情况下,可以忽略系数,比如 O(Cf(n)) = O(f(n))

O(m+n), O(m*n)

因为m,n两个数据规模,我们无法评估谁的规模比较大,所有我们不能省略某一个

空间复杂度

常见的空间复杂度有 O(1),O(n),O(n2),O(logn),O(nlogn)。空间复杂度相对比较简单,而且一般使用到的都是O(1),O(n),O(n2)。

复杂度比较分析


复杂度比较

相关文章

  • Python-100天(二)-Python语言进阶

    数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。 渐近时间复杂度的大O...

  • 数据结构(一)时间复杂度

    简介:如果想对数据结构和算法有基本的了解和认识,那么算法复杂度是前提,算法复杂度包含时间复杂度和空间复杂度,具体概...

  • Python语言进阶

    Python语言进阶 数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。...

  • 算法复杂度

    数据结构: 数组、链表、栈、队列、二叉树、hash表、图。 空间复杂度和时间复杂度的算法 空间复杂度和时间复杂度 ...

  • 【Python 100天从新手到大师】Python语言进阶

    Python语言进阶 数据结构和算法算法:解决问题的方法和步骤评价算法的好坏:渐近时间复杂度和渐近空间复杂度。渐近...

  • 排序算法

    数据结构8种排序时间和空间复杂度对比七大查找算法学了这么多年算法,你还不知道时间复杂度和空间复杂度如何计算吗?排序...

  • 数据结构和算法

    01_数据结构和算法绪论.mp4 02_谈谈算法.mp4 03_时间复杂度和空间复杂度.mp4 04_时间复杂度和...

  • 数据结构与算法之线性表

    前言 上一篇《数据结构和算法之时间复杂度和空间复杂度》中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行...

  • 算法复杂度分析

    复杂度分析: 数据结构和算法解决的两大问题:快和省。运行快,储存省。 复杂度分析是算法学习的精髓:时间复杂度,空间...

  • 字节算法大神熬了三个通宵整理的数据结构与算法笔记(万字长文)

    数据结构与算法(一) 时间&空间复杂度 数据结构和算法的本质是解决“快”和“省”的问题:即如何让代码运行得更快、更...

网友评论

      本文标题:数据结构和算法-时间和空间复杂度

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