前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >算法—算法的时间空间复杂度

算法—算法的时间空间复杂度

原创
作者头像
思想者杰克
修改于 2021-11-05 01:18:24
修改于 2021-11-05 01:18:24
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

1. 事后分析法

缺点:不同的数据规模,不同的机器下算法运行的时间不同,无法做到计算运行时间

2. 事前分析法

2.1 大O时间复杂度

渐进时间复杂度 随着n的增长,程序运行时间跟随n变化的趋势

2.1.1 几个原则

去掉常数项

2(n^2) =n^2

一段代码取时间复杂度最高的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test(n) {
  //时间复杂度n^3
 for(int i = 0; i < n ; i++){
   for(int i = 0; i < n ; i++){
     for(int i = 0; i < n ; i++){
            print(n);
     }
   }
 }
 //时间复杂度n^2
 for(int i = 0; i < n ; i++){
   for(int i = 0; i < n ; i++){
     print(n);
   }
 }
 //时间复杂度n
 for(int i = 0; i < n ; i++){
   print(n);
 }
}

这段代码的时间复杂度为n^3+n^2+n

当n足够大时,n^2和n与n^3相比太小,可以忽略不计

2.1.2 常见复杂度

o(1)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
i = i + 1;

o(n)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test(n){
  for(int i = 0 ;i < n;i++){
    print(i);
  }
}

o(n^2)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test(n){
  for(int i = 0 ;i < n;i++){
    print(i);
    for(int j = 0 ;j < n;j++){
      print(i);
    }
  }
}

o(log2n)

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test(n) {
  int i = 1;
  while (i <= n) {
    i = 2 * i;
  }
}

随着循环次数的增加,i的值变化如下

根据对数函数的公式 2的i次方等于n,i等于log2n

2.2 最好情况时间复杂度

数据比较有序的情况的时间复杂度

2.3 最坏情况时间复杂度

数据完全无序

3. 空间复杂度

与n无关的代码空间复杂度可以忽略

空间复杂度O(n)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test(n) {
  //在内存中开辟了一个长度为n的数组
  List array  =  List(n);
  print(array.length);
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【数据结构】时间和空间复杂度
实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要 大概执行次
用户11288949
2024/09/24
810
【数据结构】时间和空间复杂度
数据结构与算法 - 时间复杂度与空间复杂度
时间复杂度:时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的最大次数。 空间复杂度:类似于时间复杂度的讨论,一个算法的空间复杂度为该算法所耗费的存储空间。往往跟为最大创建次数。
進无尽
2018/12/19
2.3K0
算法的时间复杂度和空间复杂度笔记
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
蛮三刀酱
2019/09/10
1.2K0
算法的时间复杂度和空间复杂度笔记
【数据结构】时间复杂度和空间复杂度(几乎最全,包含各种类型示例)讲解
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。没有一种单一的数据结构对所有用途都有用,所以我们要学各式各样的数据结构,如:线性表、树、图、哈希等
Crossoads
2024/10/21
5380
【数据结构】时间复杂度和空间复杂度(几乎最全,包含各种类型示例)讲解
时间复杂度o(1), o(n), o(logn), o(nlogn)
1、时间复杂度o(1), o(n), o(logn), o(nlogn)。算法时间复杂度的时候有说o(1), o(n), o(logn), o(nlogn),这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。
别先生
2019/10/15
1.4K0
【算法与数据结构】复杂度深度解析(超详解)
算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。
学习起来吧
2024/02/29
2480
【算法与数据结构】复杂度深度解析(超详解)
【数据结构】时间复杂度
⒉其次能够使用一种语言熟练的实现这些数据结构。一般在项目开发当中,我们是不需要自己实现数据结构的、一般成熟的面向对象都有自己的数据结构库、如C++的STL(C++算法当中的库),Java的集合类。但是造轮子是一个深度的学习过程,经过这样的学习,你对数据结构的理解就脱胎换骨了,能够更加高效的使用他们。其次技术进阶的一个必经之路就是学习开源的项目,很多的开源项目都用了很多的数据结构,数据结构不扎实的话就相当于技术进阶的拦路虎。
謓泽
2023/10/16
1560
【数据结构】时间复杂度
知识改变命运:数据结构 【时间和空间复杂度】
**算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作 空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间, 在计算机发展的早期,计算机的存储容量很小。**所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计 算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。
用户11319080
2024/10/17
840
【数据结构】算法的时间复杂度
上一小节我们讲到,比较两个算法的优劣最重要的比较方式就是拿算法的时间复杂度来做比较.这节我们就来系统的学习一下算法的时间复杂度:
修修修也
2024/04/01
1320
【数据结构】算法的时间复杂度
算法—时间复杂度[通俗易懂]
时间和空间都是计算机资源的重要体现,而算法的复杂性就是体现在运行该算法时的计算机所需的资源多少;
全栈程序员站长
2022/08/27
3.1K0
算法—时间复杂度[通俗易懂]
《Java初阶数据结构》----1.<时间复杂度&空间复杂度计算>
在实际中一般情况关注的是算法的最坏运行情况,所以数组中搜索数据时间复杂度为O(N)
用户11288958
2024/09/24
1210
《Java初阶数据结构》----1.<时间复杂度&空间复杂度计算>
时间和空间复杂度
❤️❤️下面求斐波那契数列的算法效率高还是不高?为什么?该如何衡量一个算法的效率呢?
E绵绵
2024/04/17
1610
时间和空间复杂度
深入理解算法效率:时间复杂度与空间复杂度
在现代计算机科学和编程中,算法的效率至关重要。算法效率不仅影响程序的运行时间,还直接关系到程序的内存使用情况。为了评估和优化算法,我们常用两个主要指标:时间复杂度和空间复杂度。本文将详细介绍这两个概念,并通过C语言示例来解释它们的实际应用。
平凡之路.
2024/10/09
3450
深入理解算法效率:时间复杂度与空间复杂度
数据结构与算法之美 - 时间和空间复杂度
1.数据结构和算法解决是 “如何让计算机更快时间、更省空间的解决问题”。2.因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能。3.分别用时间复杂度和空间复杂度两个概念来描述性能问题,二者统称为复杂度。4.复杂度描述的是算法执行时间(或占用空间)与数据规模的增长关系。
夜尽天明
2019/06/03
4450
算法复杂度(二)
[ 来自360百科 ]算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。应用于数学和计算机导论。同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。下面就时间复杂度和空间复杂度做出解释。
花狗Fdog
2020/10/28
5640
算法复杂度(二)
算法的时间复杂度和空间复杂度
斐波那契数列的递归实现方式非常简洁,但简洁一定好吗?那该如何衡量其好与坏呢?
绝活蛋炒饭
2024/12/16
1570
算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度计算
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,是一种“渐进表示法”。其中f(n)是问题规模n的某个函数。
全栈程序员站长
2022/08/28
2.5K0
算法的时间复杂度和空间复杂度计算
算法的时间复杂度和空间复杂度-总结[通俗易懂]
通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间复杂度分析方法是很有必要的。 算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间通常有两种方法。
全栈程序员站长
2022/08/27
1.5K0
时间复杂度和空间复杂度 如何计算出来_代码时间复杂度和空间复杂度
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n}=0(f(n))。它表示随问题规模n的增大,算法执行时间的埔长率和 f(n)的埔长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f( n)是问题规横n的某个函数。
全栈程序员站长
2022/11/17
6380
时间复杂度和空间复杂度 如何计算出来_代码时间复杂度和空间复杂度
时间复杂度与空间复杂度
在计算机程序编写前,依据统计方法对算法进行估算,经过总结,我们发现一个高级语言编写的程序程序在计算机上运行所消耗的时间取决于下列因素:
Rochester
2020/09/01
6240
推荐阅读
相关推荐
【数据结构】时间和空间复杂度
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验