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

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

绪论

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

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)

相关文章
|
8月前
|
存储 人工智能 缓存
空间复杂度介绍
空间复杂度介绍
78 0
|
8天前
|
机器学习/深度学习 存储 算法
时间复杂度和空间复杂度
时间复杂度和空间复杂度
15 0
|
20天前
|
算法
了解时间复杂度和空间复杂度
在学习数据结构前,我们需要了解时间复杂度和空间复杂度的概念,这能够帮助我们了解数据结构。 算法效率分为时间效率和空间效率
14 1
|
20天前
|
机器学习/深度学习 算法 Windows
时间复杂度
时间复杂度
|
8月前
|
机器学习/深度学习 算法
时间复杂度和空间复杂度详解
时间复杂度和空间复杂度详解
84 0
|
20天前
|
机器学习/深度学习 算法 Windows
时间复杂度与空间复杂度
如何理解时间复杂度与空间复杂度
|
20天前
|
机器学习/深度学习 算法 搜索推荐
2.时间复杂度与空间复杂度
2.时间复杂度与空间复杂度
32 0
|
7月前
|
算法
【时间复杂度和空间复杂度】
【时间复杂度和空间复杂度】
33 0
|
8月前
|
存储 机器学习/深度学习 并行计算
空间复杂度
空间复杂度(Space Complexity)是用于描述算法在执行过程中所需占用空间大小的量度。空间复杂度通常与算法的输入规模成正比,表示算法在处理不同规模数据时所需的空间资源。空间复杂度可以帮助我们评估算法的效率,以及在实际应用中可能产生的内存消耗。
42 0
|
9月前
|
算法 测试技术
复杂度分析:时间复杂度、空间复杂度
复杂度分析:时间复杂度、空间复杂度

热门文章

最新文章