算法的时间复杂度、空间复杂度(二)

简介: 时间复杂度、空间复杂度的简介和如何计算

网络异常,图片无法展示
|

时间复杂度

算法时间复杂度应该和事前预估算法时间开销T(n)与问题规模n的关系,可以表示为:

T = T(n)

一般来说算法的时间复杂度只需要考虑阶数高的部分,比如 T = n^2 + 3n + 2,我们可以把它的时间复杂度看成为:T = n^2

如何计算

  1. 找到一个基本操作(最深层循环)
  2. 分析基本操作的执行次数x与问题规模n的关系 x = f(n)
  3. x的数量级O(x)就是算法时间复杂度T(n)

三种复杂度

  • 最坏时间复杂度:最坏情况下算法的时间复杂度;
  • 平均时间复杂度:所有输入示例等概念出现的情况下,算法的期望运行时间;
  • 最好时间复杂度:最坏情况下算法的时间复杂度;

比如:通过顺序索引寻找一个数组中的一个元素,最优算法就是下arr[0] 找到,即将T(n)=O(1) ,而平均时间复杂度为: T(n)=O(n)

例子

void f(int n){
    int i = 1;
    while(i <= n ){
        i = i*2;
        printf("hello");
    }
    printf("hello");
}

分析:总x的循环的次数和i对应的关系为,所以i=x^2,当x^2>n的时候循环结束,即x=lgn+1的时候结束循环,所以时间复杂度T(n)= O(lgn)

网络异常,图片无法展示
|

空间复杂度

S(n) = O(f(n))

其中n为问题的规模或者大小

导致内存的开销

  • 定义的某些变量
  • 函数调用

如何计算

对于一般的程序来说:

  1. 找到所占空间大小与问题规模相关的变量
  2. 分析空间x与问题规模n的关系 x = f(n)
  3. x的数量级O(x)就是算法空间复杂度 S(n)

对于用递归的程序来说:

  1. 找到递归调用的深度x与问题规模n的关系 x = f(n)
  2. x的数量级O(x)就是算法空间复杂度 S(n)
目录
相关文章
|
11月前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
200 6
|
机器学习/深度学习 算法 程序员
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
本文是作者阅读《趣学算法》后的笔记,介绍了算法复杂度的基本概念,包括时间复杂度和空间复杂度的不同阶表示,并通过具体例子展示了如何计算和理解算法的效率。
152 2
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
|
11月前
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
11月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
402 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
11月前
|
机器学习/深度学习 存储 算法
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
123 1
|
11月前
|
存储 算法
算法的时间复杂度和空间复杂度
本文详细讨论了算法的时间复杂度和空间复杂度,包括它们的概念、计算方法和常见复杂度的对比,并通过多个实例解释了如何计算算法的时间和空间复杂度。
757 0
算法的时间复杂度和空间复杂度
|
算法 Python
震惊!Python 算法设计背后,时间复杂度与空间复杂度的惊天秘密大起底!
在 Python 算法设计中,理解并巧妙运用时间复杂度和空间复杂度的知识,是实现高效、优雅代码的必经之路。通过不断地实践和优化,我们能够在这两个因素之间找到最佳的平衡点,创造出性能卓越的程序。
127 5
|
缓存 算法 数据处理
时间&空间复杂度,Python 算法的双重考验!如何优雅地平衡两者,打造极致性能?
在Python算法中,时间与空间复杂度的平衡至关重要。时间复杂度反映算法执行时间随输入规模的变化趋势,空间复杂度则关注额外存储空间的需求。优秀的算法需兼顾两者,如线性搜索时间复杂度为O(n),空间复杂度为O(1);二分查找在时间效率上显著提升至O(log n),空间复杂度保持为O(1);动态规划通过牺牲O(n)空间换取O(n)时间内的高效计算。实际应用中,需根据具体需求权衡,如实时数据处理重视时间效率,而嵌入式系统更关注空间节约。通过不断优化,我们能在Python中找到最佳平衡点,实现高性能程序。
224 3
|
11月前
|
算法 C语言
深入理解算法效率:时间复杂度与空间复杂度
深入理解算法效率:时间复杂度与空间复杂度
|
6天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)

热门文章

最新文章