# 一、时间复杂度的定义

T(n) = O(f(n))当且仅当存在正常数c和n0,对所有的的n(n>=n0)满足T(n) <= c*O(f(n)).(一般考虑n比较大时的情况)

此处T(n)为算法的时间复杂度,其中n为算法所处理的数据元素个数,则T(n) = O(f(n))表示算法的时间复杂度随n的增长率与函数f(n)的增长率相同,或者说两者具有相同的数量级。

用大写O()来描述时间复杂度,称之为“大O记法”。

一般情况下,随着输入规模n的增大,T(n)增长最慢的算法为最优算法。

# 二、推导时间复杂度的方法

1、当运行时间只有常数时,则用1来代替。

如:int i = 16, j = 100;                 //执行一次

printf("hello world");             //执行一次

printf("%d",i);                         //执行一次

printf("%d",j);                      //执行一次

上述语句一共执行4次,但时间复杂度并不是O(4),而是O(1)。

2、在得到的运行次数函数中,只保留最高阶,且除去最高阶项中相乘的常数(此常数不为1)。

如:执行次数为f(n) = 2*n^3+4*n^2+6*n+16,时间复杂度为T(n) =  O(f(n)) = O(n^3)

# 三、常见的时间复杂度

名称 时间复杂度 例子
常数阶 O(1) 100
线性阶 O(n) 2*n+1
平方阶 O(n^2) 6*n^2+2*n
对数阶 O(log(m)n) 3*lb6+4
nlog阶 O(n*log(m)n) 3*n+3*n*log(3)n+16
立方阶 O(n^3) n^3+6*n+16
指数阶 O(2^n) 2^n+16

lbn为求n的以2为底的对数,即log(2)n

常见的时间复杂度耗费的时间从小到大的顺序为:

O(1)<O(log(m)n)<O(n)<O(n*log(m)n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)

注意:一般求解时间复杂度时,需要考虑的是算法的最坏情况。

数据结构——时间复杂度相关推荐

  1. 数据结构-时间复杂度计算示例

    数据结构-时间复杂度计算示例 1 数据结构-第一章-思维导图 2 时间复杂度-简介 3 时间复杂度-示例 3.1 时间复杂度-常用技巧 3.2 时间复杂度-示例 3.2.1 对数阶-时间复杂度计算 3 ...

  2. 分支限界法时间复杂度_数据结构时间复杂度的摊还分析(均摊法)之一:基础...

    摊还分析用来评价某个数据结构的一系列操作的平均代价,有时可能某个操作的代价特别高,但总体上来看也并非那么糟糕,可以形象的理解为把高代价的操作"分摊"到其他操作上去了,要求的就是均摊 ...

  3. 浅淡数据结构时间复杂度和空间复杂度

    文章目录 前言 1.时间复杂度和空间复杂度的相关介绍 1.为什么要引入时间复杂度和空间复杂度的概念 2.什么是时间复杂度和空间复杂度 2.具体示例分析 1.大O法只保留高阶项 2.一般情况关注的是算法 ...

  4. 数据结构--时间复杂度计算和空间复杂度计算篇

    时间复杂度和空间复杂度 一.时间复杂度 1.定义 2.三种时间复杂度 3.计算 *计算 #计算步骤 #常用技巧 #例题解析 二.空间复杂度 #定义 *计算 #计算步骤 #常用技巧 #例题解析 一.时间 ...

  5. 【牛客网】:数据结构——时间复杂度,算法复杂度

    目录 一.时间复杂度 二.算法复杂度 一.时间复杂度  先看一张图: (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机 ...

  6. 数据结构 时间复杂度 空间复杂度 一看就懂版本

    时间复杂度 时间复杂度简单的理解就是执行语句的条数.如果有循环和递归,则忽略简单语句,直接算循环和递归的语句执行次数. 比如: [java] view plaincopy int x = 1;//时间 ...

  7. 数据结构——时间复杂度和空间复杂度

    目录 1.什么是时间复杂度和空间复杂度 1.1时间复杂度 1.2空间复杂度 2.如何计算时间复杂度和空间复杂度 2.1使用大O阶方法 2.2计算一些常用算法的时间复杂度 2.3计算一些常用算法的空间复 ...

  8. 数据结构时间复杂度测试

    实验一 算法的时间复杂度测试 1.实验目的: (1)掌握时间复杂度的基本概念. (2)熟悉程序计算时间的计时方法. 2.实验环境与设备: 已安装Visual Studio 2010(或其以上版本)集成 ...

  9. java数据结构-----时间复杂度、空间复杂度

    文章目录 1.前言 2.算法与时间复杂度.空间复杂度的关系 3.时间复杂度 4.常见时间复杂度举例 5.空间复杂度 6.常见的空间复杂度举例 1.前言 当我们设计一个算法的时候要考虑他的效率,例如,使 ...

最新文章

  1. Entity Framework 学习笔记(1)
  2. php扩展dio,PHP Dio扩展新函数dio_fdopen参数返回--bad file descriptor的分
  3. 修正IE6中FIXED不能用的办法,转载
  4. 【每日算法Day 92】经典面试题:编辑距离
  5. IDL实现高分一号数据辐射定标TASK(二)
  6. 【日志分析】Window日志分析
  7. 小 Mil 来了!Milvus 智能问答机器人上线
  8. php经纬度转地址高德,高德 地址编码,转为经纬度
  9. Mybatis的特性详解——四大操作标签
  10. mysql straight join_MySQL基础之STRAIGHT JOIN用法简介
  11. 彩信发送和接收关键流程
  12. Django + vue 开发接口自动化可视化平台
  13. 爱创课堂vue视频资料
  14. 杰瑞学Perl之Hello World
  15. b站黑马Java就业班笔记P101-P200
  16. Wine微信不显示输入文字
  17. vue 实现Excel 导出
  18. 220520-TouchKey设计小结
  19. 强制关机/重启/注销
  20. 联想笔记本装完deepin后打开无线网卡,搜不到WiFi的解决办法

热门文章

  1. 打破偏见,从花西子发现的新消费品牌真相
  2. HDU 4598 Difference 差分约束 + 判奇圈
  3. LeetCode部分习题解答记录-动态规划
  4. 【LeetCode】动态规划专题
  5. FTP传输一定要注意使用二进制模式
  6. python实现计算圆的周长和面积
  7. Android ViewPager 垂直滑动 纵向滑动 VerticalViewPager
  8. 《Effective C艹》读书笔记(13)
  9. 国产Excel开发组件Spire.XLS【转换】教程(19):在 如何在 C#、VB.NET 中将 CSV 转换为 PDF
  10. 有关批判Arnold的正确姿势的建议