时间复杂度与空间复杂度(一)

简介: 时间复杂度与空间复杂度(一)

绪论

       本章是数据结构的开始,我们在判断一个算法一般是用时间复杂度和空间复杂度来衡量好坏的评判工具。

image.png

话不多说安全带系好,发车啦(建议电脑观看)。


思维导图:

image.png

要XMind思维导图的话可以私信哈


1.时间复杂度        

知识点:

时间复杂度:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一 个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知 道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个 分析方式。一个算法所花费的时间与其中语句的执行次数成正比例。(简单来说时间复杂度的计算,并不是计算其花费的时间,而是计算其运行时的执行次数)

细节(注意点):

如何来算一个算法的时间复杂度:

我们在算时间复杂度的时候一般会用到 大O渐进表示法:

对于常数次的时间复杂度来说直接用1来表示即:O(1)

在算时间复杂度时我们只取大概的量级(取到最大的量级)

对于一个N * 常数时 我们可以直接省略所乘的常数次 : O(N)(对于一个N来说乘上一个常数对数据影响并不大)

在算时间复杂度是我们一般都是直接算他的最坏情况 (因为有些时间复杂度无法直接算出,可能分最好和最坏的情况)

把log以2为底的N的对数 一般写成直接logN

练习:


例1:

void Func2(int N)
{
     int count = 0;
     for (int k = 0; k < 2 * N ; ++ k) // 2 * N == N
     {
         ++count;
     }
     int M = 10;
     while (M--)// O(1)
     {
         ++count;
     }
     printf("%d\n", count);
}

上面的Fun2时间复杂度: O(N)  (  一般以: ...... 的时间复杂度是: O(...) )

例2:

void Func2(int N)
{
     int count = 0;
     for (int k = 0; k < 2 * N ; ++ k) // 2 * N == N
     {
         ++count;
     }
     int M = 10;
     while (M--)// O(1)
     {
         ++count;
     }
     printf("%d\n", count);
}

例3:

void Func3(int N, int M)
{
 int count = 0;
 for (int k = 0; k < M; ++ k)
 {
 ++count;
 }
 for (int k = 0; k < N ; ++ k)
 {
 ++count;
 }
 printf("%d\n", count);
}
//

因为不知道 M N 的关系 所以写成 O(M+N)


如果 M >> N  : O(M)


反之 :O (N)


如果 M == N : O(N) / O (M)

相关文章
|
存储 安全 Java
Java内省(Introspector)机制:深入理解与应用
Java内省(Introspector)机制:深入理解与应用
|
大数据 API Android开发
Android MemoryFile 共享内存
Android MemoryFile 共享内存
318 0
|
安全 关系型数据库 分布式数据库
【PolarDB 开源】PolarDB 在金融行业中的实践:高可用与安全合规解决方案
【5月更文挑战第28天】PolarDB,一款适用于金融行业的强大数据库,以其高可用性和安全合规性脱颖而出。通过多副本机制和自动故障转移确保业务连续性,结合严格的访问控制和数据加密技术保护信息安全。在实际应用中,如银行核心系统,PolarDB 负责处理海量交易数据,同时支持主从架构以备故障切换。此外,设置强密码策略和加密存储确保合规性,并通过监控预警及时解决问题。随着金融科技发展,PolarDB 将在云原生架构和人工智能等领域发挥更大作用,助力金融行业创新与进步。
471 0
|
人工智能 自然语言处理 API
如何使用ModelScope-Agent快速搭建一个火爆全网的哄哄模拟器
前不久,一个爆火的基于大语言模型的应用“哄哄模拟器”在QQ群爆火了,通过文字聊天的方式,模拟在各种吵架场景中如果哄好女友,女友是由AI扮演,包含了数值系统和虚拟伴侣的文本对话能力。
|
XML 数据格式
某个Fragment单独增加沉浸式效果
某个Fragment单独增加沉浸式效果
267 0
|
人工智能 安全 大数据
携手广东机场集团,打造数字世界一个机场
携手广东机场集团,打造数字世界一个机场
352 0
|
Java 物联网 Maven
MQTT协议
mqtt介绍及应用
1258 0
MQTT协议
|
SQL 分布式计算 数据挖掘
使用基于Web的交互式开发工具Zeppelin
使用基于Web的交互式开发工具Zeppelin
|
存储 自然语言处理 Python
停用词过滤---Python自然语言处理(4)
停用词过滤---Python自然语言处理(4)
659 0
停用词过滤---Python自然语言处理(4)
|
存储 机器学习/深度学习 传感器
1-D信号压缩传感的实现(正交匹配追踪法Orthogonal Matching Pursuit)附matlab代码
1-D信号压缩传感的实现(正交匹配追踪法Orthogonal Matching Pursuit)附matlab代码