栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

时间复杂度

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

时间复杂度

在描述算法复杂度时,经常用到 O(1), O(n),O(n^2), O(logn), O(nlogn) 来表示对应算法的时间复杂度。这是算法的时空复杂度的表示。

O(函数)不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。

下面分别解释下时间复杂度为 O(1), O(n),O(n^2), O(logn), O(nlogn) 的含义:

  • O(n):代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法。
  • O(n^2):代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更高的时间复杂度。比如冒泡排序,就是典型的O(n^2)的算法,对n个数排序,需要扫描n×n次。
  • O(logn):当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。
  • O(nlogn):当数据增大n倍时,耗时增大n乘以logn倍。比如,当数据增大256倍时,耗时增大256*8=2048倍。这个复杂度高于线性低于平方。归并排序就是O(nlogn)的时间复杂度。
  • O(1): O(1)就是最低的时空复杂度了,也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变。 哈希算法就是典型的 O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的话)。

【拓展】补充一个数学知识

如果ax=N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,读作以a为底N的对数,其中a叫做对数的底数,N叫做真数。
例如:2 ^3 = 8 即 log 8 = 3。

数据结构与时间复杂度表
数据结构 查找插入删除遍历
平均 最坏 平均 最坏 平均 最坏
数组 O(n) O(n) O(n) O(n) O(n) O(n) --
有序数组 O(logn) O(n) O(n) O(n) O(n) O(n) O(n)
链表 O(n) O(n) O(1) O(1) O(1) O(1) --
有序链表 O(n) O(n) O(n) O(n) O(1) O(1) O(n)
二叉树查找 O(logn) O(n) O(logn) O(n) O(logn) O(n) O(n)
红黑树 O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(n)
平衡树 O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(n)
二叉堆 / 优先队列 O(1) O(1) O(logn) O(logn) O(logn) O(logn) O(n)
哈希表 O(1) O(1) O(1) O(1) O(1) O(1) O(n)


对增长数量级的常见假设的总结表

描述增长的数量级典型的代码说明举例
常数级别1 a = b + c a = b + c a=b+c普通语句将两个数相加
对数级别 log ⁡ 2 N log_2 N log2​N另见 对数级别代码的案例二分策略二分查找
线性级别 N N N一个for循环嵌套循环找出最大元素
线性对数级别 N log ⁡ N Nlog N NlogN另见 线性对数级别代码的案例分治归并排序
平方级别 N 2 N^2 N2双for循环嵌套双层循环查找所有元素
立方级别 N 3 N^3 N3三个for循环嵌套三层循环查找所有三元组
指数级别 2 N 2^N 2N另见 指数级别代码案例穷举查找查找所有子集
对数级别代码的案例:
在这里插入代码片
线性对数级别代码的案例:
在这里插入代码片
指数级别代码的案例:
在这里插入代码片





【参考文件】
时间复杂度 O(1),O(n),O(n^2),O(logn),O(nlogn) 详解
MathJax基础教程和快速参考
试试LaTeX插入数学公式
LaTeX在线:吴文中 数学公式编辑器

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号