算法的时间、空间复杂度如何比较?

简介: 算法的时间、空间复杂度如何比较?

一、时间复杂度BigO

首先我们不能以机器运行算法的时间来评判一个算法的时间复杂度,因为即使是相同的算法在不同机器上(机器的个体差异性)运行时间都可能不尽相同,因此我们采用

【大O表示法】——算法的渐进复杂度T(n)=O(f(n))

就是算执行次数

       首先解读这个公式,f(n)表示代码执行的次数,O表示正比例关系,而T(n)就表示算法的渐进复杂度(就是当一个问题量级增加的时候,算法运行时间增长的一个趋势)。

计算原则:

1、用常数1取代运行时间中的所有加法常数。

2、在修改后的运行次数函数中,只保留最高阶项。

例题辨析

for(int i=1;i<=n;i++)
{
x++;
}

请问这个代码块执行几次?

答:3N+1次

解析:

首先开头定义i=1,执行一次,后面在循环中就不参与,而i<=n,x++,i++各执行N次,所以相加就是3N+1次。

O(3N+1)=O(N),因为这个公式计算的是当n无限接近于正无穷时,可以省略1和3.

image.png

上面的代码执行N^2次

image.png

上面的代码原则上是执行N+N^2次,而又因为N是趋近于无穷的,所以最终结果就是N^2次,即O(N+N^2)=O(N^2)

常用的时间复杂度量级

image.png

横坐标表示代码执行的次数,纵坐标表示时间复杂度量级。

从图中不难看出,n!、2n\、n2时间复杂度都是指数级的,因此代码运行的非常慢。

1、O(1)

image.png

上面代码时间复杂度是O(1),因为当其中变量的值增加到任何值,本质交换两个数的值,时间复杂度就是O(1)

2、O(n)

image.png

这时复杂度就取决于n的大小


3、O(log n)

image.png

这其实是一道数学题,就是2^k=n,求k

两边同取对数,答案即为log n(注意此时的底数都可以忽略不计)


4、O(nlog n)

image.png

比较容易理解,外面套了一层循环,就是在原来的基础上*n。

5、o(m*n)

image.png

就是for循环嵌套,俗称套娃。


二、空间复杂度

空间复杂度自然也不是计算空间的大小,而是内存空间增长的趋势

常用的空间复杂度

O(1)、O(n)、O(n^2)

1、O(1)

image.png


无论xy增加到多少,内存分配还是不变,因此还是O(1)

2、O(n)

image.png

随着n的增加,对数组分配的空间也增多

三、总结

时间空间复杂度=时间和空间增长的复杂度

相关文章
|
1月前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
62 6
|
3月前
|
机器学习/深度学习 算法 程序员
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
本文是作者阅读《趣学算法》后的笔记,介绍了算法复杂度的基本概念,包括时间复杂度和空间复杂度的不同阶表示,并通过具体例子展示了如何计算和理解算法的效率。
65 2
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
|
4月前
|
机器学习/深度学习 存储 算法
颠覆认知!Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【7月更文挑战第22天】在Python算法设计中,时间与空间复杂度是评估算法效能的核心。时间复杂度不仅限于大O表示法,还涵盖平均与最坏情况分析。空间复杂度虽关注额外存储,但也反映内存效率。平衡二者需视场景而定,如利用原地算法减少内存消耗,或牺牲空间加速执行。算法优化技巧,如分治与动态规划,助你在资源与速度间找寻最优解,从而高效应对大数据挑战。
48 3
|
1月前
|
存储 算法
算法的时间复杂度和空间复杂度
本文详细讨论了算法的时间复杂度和空间复杂度,包括它们的概念、计算方法和常见复杂度的对比,并通过多个实例解释了如何计算算法的时间和空间复杂度。
64 0
算法的时间复杂度和空间复杂度
|
1月前
|
机器学习/深度学习 存储 算法
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
|
2月前
|
算法 Python
震惊!Python 算法设计背后,时间复杂度与空间复杂度的惊天秘密大起底!
在 Python 算法设计中,理解并巧妙运用时间复杂度和空间复杂度的知识,是实现高效、优雅代码的必经之路。通过不断地实践和优化,我们能够在这两个因素之间找到最佳的平衡点,创造出性能卓越的程序。
39 4
|
2月前
|
缓存 算法 数据处理
时间&空间复杂度,Python 算法的双重考验!如何优雅地平衡两者,打造极致性能?
在Python算法中,时间与空间复杂度的平衡至关重要。时间复杂度反映算法执行时间随输入规模的变化趋势,空间复杂度则关注额外存储空间的需求。优秀的算法需兼顾两者,如线性搜索时间复杂度为O(n),空间复杂度为O(1);二分查找在时间效率上显著提升至O(log n),空间复杂度保持为O(1);动态规划通过牺牲O(n)空间换取O(n)时间内的高效计算。实际应用中,需根据具体需求权衡,如实时数据处理重视时间效率,而嵌入式系统更关注空间节约。通过不断优化,我们能在Python中找到最佳平衡点,实现高性能程序。
66 3
|
1月前
|
算法 C语言
深入理解算法效率:时间复杂度与空间复杂度
深入理解算法效率:时间复杂度与空间复杂度
|
3月前
|
搜索推荐
九大排序算法时间复杂度、空间复杂度、稳定性
九大排序算法的时间复杂度、空间复杂度和稳定性,提供了对各种排序方法效率和特性的比较分析。
148 1
|
4月前
|
存储 算法 搜索推荐
深度剖析 Python 算法:时间复杂度与空间复杂度的爱恨情仇,你站哪边?
【7月更文挑战第23天】在Python算法设计中,时间复杂度与空间复杂度如影随形,反映算法效率与资源消耗。时间复杂度揭示算法随输入规模增长的计算趋势,空间复杂度关注额外存储需求。找最大值示例中,两种实现均具O(n)时间与O(1)空间复杂度,但在排序等复杂场景下,如冒泡排序与快速排序,或哈希表与二叉树查找,权衡变得关键。实时系统偏好低时间复杂度算法,存储受限环境则需关注空间效率。最佳选择依应用场景而定,掌握二者平衡,方能编写高效代码。
41 10