Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >时间复杂度

时间复杂度

作者头像
OPice
发布于 2021-09-07 10:10:41
发布于 2021-09-07 10:10:41
62800
代码可运行
举报
文章被收录于专栏:D·技术专栏D·技术专栏
运行总次数:0
代码可运行

  之前认为时间复杂度就是程序执行的时间,百度上这么说的

算法时间复杂度是一个函数,它定性描述该算法的运行时间

很多人包括我自己都有一个疑问,就是现在的计算机的硬件性能已经很强大了,所以对于性能或者说时间复杂度上还用关心吗,答案是需要的。 比如有这样一个例子,在一台很久的机器和一台处理性能高100倍的新机器,旧机器执行算法A时间复杂度为O(n),新机器执行算法B的时间复杂度为O(n2)。下面表格做下对比,因为性能差100倍,所以旧机器时间*100

-

O(n)

O(n2)

n=1

100

1

n=10

1000

100

n=50

5000

2500

n=100

10000

10000

n=1000

100 000

1 000 000

可以看出来n 在100之前新机器运行时间比旧机器少,但是当n>100,甚至越来越大时,运行时间新机器已经比旧机器多了。 在实际开发项目上,这样的差距会被无限放大,成本就会体现出来。

大O表示法

在举一个例子 1、

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (int i = 0; i < 10; i++) {
      System.out.println("执行"+i+"次");
}

这个代码总会执行10次,所以时间复杂度表现为 T(n) = 10.

2、下面如果把10,换成变量n,则公式变为 T(n) = n.

3、再往下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (int i = n; i > 1; i /= 2) {
      System.out.println("执行" + i + "次");
 }

执行次数 T(n) = logn 4、

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.println("do something");
            }
        }

公式为T(n) = n2 针对上面场景时间复杂度的分析,有了渐进时间复杂度。

算法的渐进分析就是要估计:n逐步增大时资源开销T(n)的增长趋势

有如下几个原则:

  • 如果运行时间是常数量级,用常数1表示;
  • 只保留时间函数中的最高阶项;
  • 如果最高阶项存在,则省去最高阶项前面的系数。

大O表示法,针对场景上面四种场景:

  • T(n) = 10 可以表示为O(1)
  • T(n) = n 可以表示为O(n),同样如果T(n) =5 n,也是如此
  • T(n) = logn 可以表示为O(logn)
  • T(n) = n2 可以表示为 O(n2)

O(1) < O(logn) < O(n) < O(n^2),当然除了这些还有更复杂的 O(nlogn)、O(n^3)、 O(m*n)、O(2^n)、O(n!)

所以判断一个算法的复杂度,使用大O表示法可以很直观的判断出来。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
漫画:什么是时间复杂度?
场景1. 给小灰一条长10寸的面包,小灰每3天吃掉1寸,那么吃掉整个面包需要几天?
用户1564362
2019/07/04
4180
【久远讲算法①】什么是时间复杂度
小学数学课上,你是不是可以用 3+3+3 或者 3*3 来解决三个三相加这个问题,虽然算的结果都是9,但是中间我们用的方法是不一样的。
AI悦创
2021/10/10
3480
【久远讲算法①】什么是时间复杂度
算法中的时间复杂度
程序员写代码过程中总要用到算法,而不同的算法有不同的效率,时间复杂度是用来评估的算法的效率的一种方式。
张云飞Vir
2020/03/23
1.2K0
简单计算时间复杂度
计算时间复杂度的3个出发点,掌握这三个出发点,那么一向搞不懂的时间复杂度就可以迎刃而解啦。
ha_lydms
2023/08/09
2330
简单计算时间复杂度
【初阶数据结构】时间复杂度和空间复杂度(超有趣+超详细)
作为一位程序员,一颗强有力的好胜心和对知识充满渴望的眼神是必不可少的。如果你还拥有一头秀发,那更是程序员界中的佼佼者(开玩笑)😊。
埋头编程
2024/10/16
1480
《Java初阶数据结构》----1.<时间复杂度&空间复杂度计算>
在实际中一般情况关注的是算法的最坏运行情况,所以数组中搜索数据时间复杂度为O(N)
用户11288958
2024/09/24
1360
《Java初阶数据结构》----1.<时间复杂度&空间复杂度计算>
【数据结构与算法】2.时间复杂度和空间复杂度
算法效率分为两种:第一种是时间效率;第二种是空间效率。时间效率又称为时间复杂度,而空间效率又称为空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度衡量一个算法所需要的额外空间。
爱敲代码的小杨.
2024/05/07
1410
【数据结构与算法】2.时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度计算
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,是一种“渐进表示法”。其中f(n)是问题规模n的某个函数。
全栈程序员站长
2022/08/28
2.7K0
算法的时间复杂度和空间复杂度计算
时间复杂度与空间复杂度
在计算机程序编写前,依据统计方法对算法进行估算,经过总结,我们发现一个高级语言编写的程序程序在计算机上运行所消耗的时间取决于下列因素:
Rochester
2020/09/01
6380
算法—时间复杂度[通俗易懂]
时间和空间都是计算机资源的重要体现,而算法的复杂性就是体现在运行该算法时的计算机所需的资源多少;
全栈程序员站长
2022/08/27
3.2K0
算法—时间复杂度[通俗易懂]
算法的时间复杂度
算法在编写成可执行程序后, 运行时需要耗费时间资源和空间资源. 因此衡量一个算法的好坏, 一般是从时间和空间两个维度来衡量的, 即时间复杂度和空间复杂度.
用户11317877
2024/10/16
1780
算法的时间复杂度
数据结构之时间复杂度
时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。
用户10923276
2024/03/28
4370
数据结构之时间复杂度
算法的时间复杂度(详解)
算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果
用户11375356
2024/11/22
4320
算法的时间复杂度(详解)
【时间复杂度空间复杂度】
当文件没有进行保存时,这个文件保留在内存中,一旦断电,文件将无法保存,因此为了避免这种情况的发生,,处理文件之后,应该及时的ctrl+s保存到磁盘当中去。
每天都要进步呀
2023/03/28
1.7K0
【时间复杂度空间复杂度】
时间复杂度和空间复杂度 如何计算出来_代码时间复杂度和空间复杂度
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n}=0(f(n))。它表示随问题规模n的增大,算法执行时间的埔长率和 f(n)的埔长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f( n)是问题规横n的某个函数。
全栈程序员站长
2022/11/17
6640
时间复杂度和空间复杂度 如何计算出来_代码时间复杂度和空间复杂度
数据结构:时间复杂度
算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即🔍时间复杂度和🔍空间复杂度。
用户11396661
2024/12/09
1310
数据结构:时间复杂度
算法(一)时间复杂度
前言 算法很重要,但是一般情况下做移动开发并不经常用到,所以很多同学早就将算法打了个大礼包送还给了老师了,况且很多同学并没有学习过算法。这个系列就让对算法头疼的同学能快速的掌握基本的算法。过年放假阶段玩了会游戏NBA2K17的生涯模式,没有比赛的日子也都是训练,而且这些训练都是自发的,没有人逼你,从早上练到晚上,属性也不涨,但是如果日积月累,不训练和训练的人的属性值就会产生较大差距。这个突然让我意识到了现实世界,要想成为一个球星(技术大牛)那就需要日积月累的刻意训练,索性放下游戏,接着写文章吧。 1.算法的
用户1269200
2018/02/01
8550
算法(一)时间复杂度
算法时间复杂度分析(一)
金庸武侠中描述一种武功招式的时候,经常会用到 “快、准、狠” 这3个字眼。同样,在计算机中我们衡量一种算法的执行效率的时候也会考量3个方面:“快、省、稳”。
全栈程序员站长
2022/08/28
5020
算法时间复杂度分析(一)
【数据结构与算法】时间复杂度与空间复杂度
早期,计算机刚被发明出来,内存空间并不是很大,所以不仅追求程序运行时的时间效率,还追求空间效率,但发展到今天,已经不太追求空间效率了,时间效率的追求是不变的。
aosei
2024/01/23
1240
【数据结构与算法】时间复杂度与空间复杂度
数据结构 | 时间复杂度与空间复杂度
复杂度是衡量一个算法好坏的标准,可以从 时间 和 空间 两个维度进行比较。可能你之前听说某个算法的时间复杂度是O(N),空间复杂度是O(1),知道这是一个还不错的算法,那么你知道这些复杂度是如何计算出来的吗?本文将会揭开它们神秘的面纱,让你拥有一把衡量算法好坏的度量衡。
北 海
2023/07/01
2670
数据结构 | 时间复杂度与空间复杂度
相关推荐
漫画:什么是时间复杂度?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验