时间复杂度是一个理解比较难的问题,网上有很多讲解,但都不详细,一般都是举个例子,然后告诉你,这个的时间复杂度是多少多少。例如告诉你冒泡排序的时间复杂度是O(n^2),然后就没然后了。这可难坏了初学不懂时间复杂度的人。喂!我可不是要知道这个例子的时间复杂度到底多少,我是想知道它的时间复杂度为什么是这个的啊而不是想知道答案而已,你给我个鱼竿,告诉我能钓鱼,却不告诉我怎么钓鱼,还不是要饿死我,而且更让我难受了。

俗话说,授人以鱼不如授人以渔。现在,为了解决大家的痛点,我详细讲讲时间复杂度,带来例子,并详明它的时间复杂度为什么是这个答案。

注意!时间复杂度不是单纯的耗时,而是指耗时与数据增长量之间的关系(一般可以套用耗时x数量增长量),我搜了下,竟然有“时间复杂度为O(1)就是耗时1秒,查找10000次时间复杂度O(n)就是耗时10000秒”这样扯淡的说法

时间复杂度O(1)理解:
这个很简单,一般的简单操作就是O(1),像"int n = 1;"这样单步骤的(我称之为元操作)。这个不需要多讲。
一般来说,像执行查找的时候,像HashMap这样通过contains()方法查找HashCode直接可以查找出某个值的操作,其时间复杂度也是O(1).

时间复杂度O(n)理解:
这里用使用contains()方法使用查找List集合里面的某个元素来举例。List是有序表,不能直接一次性查找到。比如从{12,23,45,··· ···,76,32}里面查找76,要从12开始查找,一次次循环查找,直到查到76并返回。这里每次的查找时间复杂度为O(1),需要查找N次才能查到76,则时间复杂度可以看作是N * O(1)=O(n)。注意,这里的n不是具体的数值N,不要以为查询了100次就是O(100),这是错的,这里只是为了方便理解(前面说了,时间复杂度并不是单指耗时,下同)。

时间复杂度O(logn)理解:
一般的查找都是O(n),但是如果通过算法,可以使查找的时间复杂度降低,比如二分查找。像上面解释O(n)的例子中,采用二分查找的话,是不是就是个log(O(n))的对数数学模型,所以其时间复杂度为O(logn)。

时间复杂度O(n^2)理解:
这里拿冒泡排序对某个数组进行有序排序举例。在冒泡排序中,分为获取值、对该值进行排序、重复取值排序三个步骤。其中取值时间复杂度为O(1),则在N个数中进行该值的比较排序,则为N*O(1)=O(n)时间复杂度。这时候还没有获取到有序数组,必须对这N个数重复进行取值、排序,执行N次,故时间复杂度为N * N * O(1)=O(n^2)。

常用排序方式的复杂度(图片来自网络):

各种时间复杂度下随操作量级N增长耗时,从中可以知道二分查找的魅力(图片来自网络):

详细告诉你为什么它、它、它的时间复杂度是O(1)、O(n)、O(logn)、O(n^2),算法时间复杂度理解相关推荐

  1. lga775服务器cpu系列,详细告诉你lga775接口的cpu有哪些

    支持的CPU型号有:奔腾4.赛扬D,奔腾D8.D9系列,奔腾E2.奔腾E5.E6,酷睿E4.E6.E7.E8,酷睿Q6.Q8.Q9,详细看下面,lga775接口支持的CPU还是蛮多的,说以不需要过多的 ...

  2. 字符串匹配KMP算法的理解(详细)

    1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱.所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文. ...

  3. 排序算法-算法时间复杂度和空间复杂度概念 详细讲解

    排序算法-算法时间复杂度和空间复杂度概念 详细讲解 排序算法的介绍 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程. 排序的分类: 1)内部排序: 指将 ...

  4. 电脑休眠和睡眠的区别_电脑休眠和睡眠有什么区别呢?小编详细告诉你

    今天小编就和大家聊一聊电脑休眠模式和睡眠模式的区别.我们在电脑关机的时候经常会看到几个选项,关机,待机我们都不陌生.电脑休眠和电脑睡眠是什么意思呢?那就一起来看看吧 休眠 将系统切换到该模式后,系统会 ...

  5. 什么是云数据库?这篇文章详细告诉你!

    在互联网时代,如何选择一个高性价比的云,也成为很多企业的痛点.一直以来,云数据库所表现的"即开即用.稳定可靠.安全运行.弹性伸缩.轻松实用"等等优势特点,被电商.游戏.视频.IoT ...

  6. 请详细告诉我物联网技术的优势

    物联网技术的优势包括: 实时监控:可以对实体物品进行实时监控和跟踪,并对其进行远程控制. 智能化:可以通过大量数据和人工智能技术来提高物品的智能化水平,并进行自动化操作. 连接性:可以将不同物品之间连 ...

  7. linux下嵌入式系统,嵌入式linux系统应用领域?这里详细告诉你

    嵌入式系统是目前发展最快的行业之一了,嵌入式成为了现在IT届的新宠儿,尤其是嵌入式linux系统,嵌入式linux系统技术应用十分广阔的,我想如果你还不知道嵌入式linux系统的,那你就out了,嵌入 ...

  8. 算法时间复杂度求解法【详细过程说明】

    https://www.cnblogs.com/fanchangfa/p/3868696.html https://blog.csdn.net/kangkang_hacker/article/deta ...

  9. 隐马尔科夫模型(HMM)算法的理解与超详细推导

    今天看了徐亦达教授的HMM讲解,感觉有所收获,并将隐马尔科夫模型算法的推导整理了一下,帮助大家一起理解这个算法.首先我们通过一个股票的案例来引入这个算法,我们来看看这个股票行情和涨跌观测值的一个状态图 ...

最新文章

  1. MPLS的简单配置4
  2. 虚拟服务器目录,服务器虚拟主机目录
  3. 启明云端技术社区之星--张广星
  4. 社会工程学[Social Engineering]
  5. 牛客 - 牛半仙的妹子Tree(按询问分块+RMQ求LCA)
  6. python遍历excel_python遍历文件读取并写结果到excel
  7. 6款html5模板下载
  8. C++即时通讯实现原理及常见问题
  9. linux mysql插入中文乱码_Unix下Mysql插入中文出现乱码
  10. 睡眠多少分钟一个循环_关于科学睡眠丨90分钟一个睡眠周期,每晚循环3到5次...
  11. 【计算机网络】Internet原理与技术2(因特网的路由协议RIP、OSPF、BGP,网络地址转换NAT,网络协议IPv6)
  12. 交比不变性 matlab,高等几何答案
  13. 创建目录 java_java创建文件和目录
  14. 安装VS2010 SP1失败,安装VS2010 SP1时出现回滚,
  15. Linux监控平台搭建
  16. 如何用微信公众号快速注册小程序
  17. 小程序 uni canvas绘制圆角图片 圆角矩形
  18. 如何确定MessageBox哪个按钮被点击。
  19. 柔性传感器产业化将至或将成为折叠屏背后的“黑科技”
  20. supermap地图风格优化

热门文章

  1. baofeng 火柴问题
  2. Simple-Calendar
  3. BSphp网络验证系统,三方插件 开源代理开通扣点插件
  4. 基于ElasticSearch的问答系统(KBQA)
  5. 第一篇博客 面朝大海春暖花开
  6. 【路径规划】基于麻雀算法求解栅格地图路径规划及避障含Matlab源码
  7. 【感动】男子遭拐卖32年坚持寻找父母终团聚
  8. 一图详解项目管理的49个过程组及其数据流向
  9. go get dial tcp 172.217.163.49:443: i/o timeout
  10. 火狐调试javascript