美文网首页
数据结构与算法之美 —— 复杂度分析(上)总结

数据结构与算法之美 —— 复杂度分析(上)总结

作者: 先生爱喝咖啡 | 来源:发表于2019-02-13 21:54 被阅读0次

时间复杂度 概念 (百度百科)

对于一个算法,假设其问题的输入大小为n,那么我们可以用 O(n) 来表示其算法复杂度(time complexity)。那么,渐进时间复杂度(asymptotic time complexity)就是当n趋于无穷大的时候,O(n)得到的极限值。

注意:这里表示的是 代码执行时间随数据规模增长的变化趋势 并非准确的执行时间,这是一个比较抽象的概念。

为什么要需要时间复杂度

  1. 测试结果非常依赖测试环境
    如:不同处理器,不同系统都可能造成测试结果不同
  2. 测试结果受数据规模的影响很大
    如: 对同一个排序算法,待排序数据的有序度不一样,排序的执行时间就会有很大的差别。极端情况下,如果数据已经是有序的,那排序算法不需要做任何操作,执行时间就会非常短。除此之外,如果测试数据规模太小,测试结果可能无法真实地反应算法的性能。比如,对于小规模的数据排序,插入排序可能反倒会比快速排序要快!

时间复杂度从客观数学的角度分析一个算法的好坏,不会受到外界环境的影响

时间复杂度分析要点

  1. 只关注循环执行次数最多的一段代码
    只用关注不确定变量段代码分析其时间复杂度
  2. 加法法则:总复杂度等于量级最大的那段代码的复杂度
    多个不确定变量的多段代码影响算法的运行时间时,需要一一分析其时间复杂度然后相加
  3. 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
    嵌套代码,分别分析外层代码(把内层代码当做一个整体)、内层代码复杂度相乘

所谓的量级个人感觉就是影响程序(算法)运行的不确定变量
在以上定义中时间复杂度是表示的变化趋势,那么每块代码(行)执行的时间可以看做一个单位时间1。所以这里不用纠结这里的单位运行时间(算是一种思想吧)

几种常见时间复杂度

多项式阶:随着数据规模的增长,算法的执行时间和空间占用,按照多项式的比例增长。包括,
O(1)(常数阶)、O(logn)(对数阶)、O(n)(线性阶)、O(nlogn)(线性对数阶)、O(n2)(平方阶)、O(n3)(立方阶)
非多项式阶:随着数据规模的增长,算法的执行时间和空间占用暴增,这类算法性能极差。包括,
O(2^n)(指数阶)、O(n!)(阶乘阶)

时间复杂度图

时间复杂度图.jpg

最后总结

时间复杂度是一种理论上,建立在抽象思维上对算法的时间多少的分析,这与他的外界环境平台无关,能够使我们理性客观的分析程序或算法的好坏。
说到底这是一种思维,是一种分析的方法。在实际测试中这只能做一个理论上的参考,具体好坏还需要看具体场景环境测试数据分析。

相关文章

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 重温:数据结构与算法 - 02复杂度分析(二)

    数据结构与算法之美-学习大纲 上一节,学习了什么是大O复杂度分析、有哪些复杂度分析技巧、什么是时间复杂度、什么是空...

  • 《数据结构与算法之美--复杂度分析》

    《数据结构与算法之美--复杂度分析》 keyword: ​ 概念,大O表示法,常见的时间复杂度,最好、最坏、平...

  • 数据结构与算法之美(一):复杂度分析

    本章内容源于笔者对极客时间《数据结构与算法之美》以下章节的学习笔记: 复杂度分析(上):如何分析、统计算法的执行效...

  • 算法的复杂度分析

    本文是对极客时间《数据结构与算法之美》03-04 节课关于算法复杂度分析的小结。 前面:为什么要学习数据结构与算法...

  • 数据结构之栈

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之队列

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之二分查找的概念

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之二叉树

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之二叉搜索树

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

网友评论

      本文标题:数据结构与算法之美 —— 复杂度分析(上)总结

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