`

时间复杂度和空间复杂度的概念

阅读更多
算法复杂度 分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。
时间复杂度
1.时间频度

  一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
2.计算方法

  1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))

  分析:随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。

  2. 在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级(它的同数量级有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n)=该数量级,若T(n)/f(n)求极限可得到一常数c,则时间复杂度 T(n)=O(f(n))

  例:算法:

view plaincopy to clipboardprint?

   1. for(i=1;i<=n;++i) {  
   2.     for(j=1;j<=n;++j) {  
   3.     c[i][j]=0; //该步骤属于基本操作 执行次数:n的平方 次  
   4.     for(k=1;k<=n;++k){ 
   5.                 c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n的三次方 次  
   6.             }    
   7.  }  
   8. } 

for(i=1;i<=n;++i) { for(j=1;j<=n;++j) {    c[i][j]=0; //该步骤属于基本操作 执行次数:n的平方 次    for(k=1;k<=n;++k){ c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n的三次方 次 }  } }

则有 T(n)= n的平方+n的三次方,根据上面括号里的同数量级,我们可以确定 n的三次方 为T(n)的同数量级

  则有f(n)= n的三次方,然后根据T(n)/f(n)求极限可得到常数c

  则该算法的 时间复杂度:T(n)=O(n的三次方)
3.分类

  按数量级递增排列,常见的时间复杂度有:

  常数阶O(1),对数阶O(log2n),线性阶O(n),

  线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),...,

  k次方阶O(nk), 指数阶O(2n) 。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
空间复杂度

  与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作:

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

  我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。

Floyd:求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。

  Dijkstra:求单源、无负权的最短路。时效性较好,时间复杂度O(V^2)。可以用堆优化。

  Bellman-Ford:求单源最短路,可以判断有无负权回路(若有,则不存在最短路),时效性较好,时间复杂度O(VE)。

  SPFA:是Bellman-Ford的队列优化,时效性相对好,时间复杂度O(kE)。(k<<V)。

  宽搜:求单源无权最短路。矩阵记录法时间复杂度O(V^2);边表记录法时间复杂度O(kE)。



  稠密图单源无负权最短路:Dijkstra。

  稠密图单源有负权最短路:SPFA。

  稀疏图单源最短路:SPFA或Bellman-Ford。

  多源无负权最短路:Floyd。

  多源无权最短路:宽搜。
分享到:
评论

相关推荐

    算法 时间复杂度 空间复杂度 经典

    ### 算法的时间复杂度与空间复杂度详解 #### 一、算法复杂度概述 在计算机科学领域,算法的时间复杂度与空间复杂度是衡量一个算法效率的重要指标。时间复杂度关注的是算法执行时间的增长速率,而空间复杂度则侧重...

    信息学奥赛算法时间复杂度和空间复杂度计算

    算法效率分析主要包括时间效率和空间效率,它们分别对应于时间复杂度和空间复杂度的概念。 首先,时间效率指的是算法在解决问题时所消耗的时间,用时间复杂度来衡量。时间复杂度是对算法运行时间随问题规模增长的...

    数据结构时间复杂度和空间复杂度.pdf

    ### 数据结构中的时间复杂度与空间复杂度 ...在准备编程面试时,掌握时间复杂度和空间复杂度的概念以及如何优化算法是非常重要的。通过大量的练习和模拟面试,可以更好地理解和应用这些概念,从而在面试中表现出色。

    算法基础:算法概念,时间复杂度 ,空间复杂度

    算法基础知识点 算法基础是计算机科学中的一门重要课程,它是解决问题...算法基础是计算机科学中的一门重要课程,它包括算法概念、时间复杂度、空间复杂度和递归等内容。理解这些概念对于设计高效的算法是非常重要的。

    算法复杂度——时间复杂度和空间复杂度.doc

    ### 算法复杂度详解:时间复杂度与空间复杂度 #### 一、时间复杂度 **1.... 在讨论算法效率时,我们通常... - 通过对算法的时间复杂度和空间复杂度进行分析,我们可以更好地理解算法的工作原理,并据此优化算法的设计。

    算法的时间复杂度和空间复杂度-总结.doc

    在计算机科学中,算法的时间复杂度和空间复杂度是衡量算法效率的重要指标。时间复杂度主要关注算法执行所需时间的增长速度,而空间复杂度则关注算法执行过程中内存使用的程度。理解这两个概念对于优化代码和设计高效...

    7.时间复杂度空间复杂度1

    - **空间复杂度概念**:它衡量一个算法执行时所需的内存空间,包括临时变量、数据结构等。在早期计算机资源有限的时代,空间复杂度是重要考虑因素。虽然现在存储容量大增,但在处理大数据或嵌入式系统时,空间...

    c++时间与空间复杂度计算

    本文主要介绍C++中算法的时间复杂度与空间复杂度的计算方法,详细阐述了复杂度分析中的一些专业术语和概念,并给出了一些常见的时间复杂度的示例和如何进行算法复杂度的判断和改进。 时间复杂度是衡量算法运行时间...

    算法的设计与分析——时间复杂度.docx

    算法设计与分析——时间复杂度 算法设计与分析是计算机科学中的一门重要课程,旨在研究和分析...通过本实验,我们可以看到快速排序的时间复杂度最低,同时也了解了算法设计与分析的基本概念和时间复杂度的计算方法。

    算法题原理、实现过程、时间复杂度和空间复杂度.zip

    1. 题目应涵盖常见的算法概念和技术,如数组、算法、数据结构等。 2. 解析每道题应详细解释算法的原理、实现过程、时间复杂度和空间复杂度等。 3. 题目和解析应清晰、简洁,易于理解

    算法分析:空间复杂度与时间复杂度的权衡艺术

    本文将探讨空间复杂度和时间复杂度的权衡,以及如何在不同场景下做出合适的选择。 空间复杂度和时间复杂度的权衡是算法设计中的一个核心问题。开发者需要根据具体问题和运行环境来做出合理的选择。本文通过实例分析...

    比特数据结构课件-Lesson2-时间复杂度空间复杂度.pdf

    本篇课件主要探讨了算法的时间复杂度和空间复杂度,这是评估算法优劣的重要标准。 1. **算法效率**:衡量一个算法的好坏,首先要考虑其效率。这不仅包括代码的简洁性,更关键的是算法运行时的时间和空间需求。例如...

    算法实验代码和报告(时间复杂度、0-1背包问题、分治与贪心、蛮力法)

    本资源包含的“算法实验代码和报告”聚焦于几个重要的算法概念:时间复杂度、0-1背包问题、分治策略以及贪心方法,这些都是计算机科学中基础且实用的知识点。 首先,我们来看**时间复杂度**。时间复杂度是用来衡量...

    关于算法时间复杂度的计算

    算法时间复杂度的计算 ...算法时间复杂度的计算是一个非常重要的概念,它帮助我们比较算法的运行时间和空间要求,并使这种比较能与程序设计语言、编译系统、机器结构、处理器的速度及系统的负载等复杂因素无关。

    shikong.rar_时间复杂度

    在“时空复杂度0801.ppt”这个文件中,很可能会详细讲解这些概念,并通过实例演示如何分析和计算时间复杂度与空间复杂度。可能还会包含一些常见的算法,如排序和搜索算法,以及它们的时间和空间复杂度分析。此外,...

    关于算法复杂度的概念的PPT

    使用递归算法可以解决 Fibonacci 数列问题,但是它的计算复杂度非常高,时间复杂度为 O(2^n)。使用动态规划或矩阵表达法可以将计算复杂度降低到 O(n) 或 O(log n)。 最后,算法复杂度的优化是非常重要的。在 ...

    时间空间复杂度.zip

    视频"时间空间复杂度2.mp4"和"时间空间复杂度.mp4"很可能详细讲解了如何分析和计算时间复杂度与空间复杂度,包括具体的例子、常见算法的时间空间复杂度分析以及如何优化这些复杂度。观看这些视频,可以进一步深入...

    算法的时间复杂度分析

    通过上述分析,我们可以计算出此算法的总频度和时间复杂度。在本例中,内部循环的频度为 `n`,中间循环的频度为 `n(n + 1)`,外部循环的频度为 `n + 1`。综合来看,整个算法的时间复杂度为 O(n^3)。 综上所述,通过...

    算法的时间复杂度分析.pdf

    在《算法的时间复杂度分析》这篇文章中,作者程世辉等人详细探讨了算法时间复杂度的相关概念及计算方法。 #### 二、算法分析的基本理论 ##### 2.1 评价算法好坏的标准 对于同一问题的不同算法,评价其优劣的标准...

Global site tag (gtag.js) - Google Analytics