`
ranyut
  • 浏览: 259208 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

算法系列一:理解时间复杂度与空间复杂度

阅读更多

 

常用的算法的时间复杂度和空间复杂度:

  

排序法

最差时间分析 平均时间复杂度 稳定度 空间复杂度
冒泡排序 O(n2) O(n2) 稳定 O(1)
快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n)
选择排序 O(n2) O(n2) 稳定 O(1)
二叉树排序 O(n2) O(n*log2n) 不一顶 O(n)

插入排序

O(n2) O(n2) 稳定 O(1)
堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1)
希尔排序 O O 不稳定 O(1)

 

 

时间复杂度:

(1)时间频度 

       一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。

       n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。

(2)时间复杂度

      一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 

      按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),..., k次方阶O(nk),指数阶O(2n)。

     算法中语句执行次数为一个常数,则时间复杂度为O(1)

(3)时间复杂度的取值

   主要用算法时间复杂度的数量级评价一个算法的时间性能。

 

时间复杂度的计算:

1. 计算出基本操作的执行次数T(n) 
    基本操作即算法中的每条语句(以;号作为分割),语句的执行次数也叫做语句的频度。在做算法分析时,一般默认为考虑最坏的情况。

2. 计算出T(n)的数量级 
    求T(n)的数量级,只要将T(n)进行如下一些操作:
    忽略常量、低次幂和最高次幂的系数
    令f(n)=T(n)的数量级。

3. 用大O来表示时间复杂度 
    当n趋近于无穷大时,如果lim(T(n)/f(n))的值为不等于0的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n))。

 

一个示例: 
int num1, num2;
for(int i=0; i<n; i++){ 
     num1 += 1;
     for(int j=1; j<=n; j++){ 
         num2 += num1;
     }


分析:
1.
语句int num1, num2;的频度为1;
语句i=0;的频度为1;
语句i<n; i++; num1+=1; j=1; 的频度为n;
语句j<=n; j++; num2+=num1;的频度为n*n;
T(n) = 2 + 4n + 3n*n

2.
忽略掉T(n)中的常量、低次幂和最高次幂的系数
f(n) = n*n = n2

3.
T(n) = O(n2)

 

空间复杂度:

空间复杂度与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作: S(n)=O(f(n)) 我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。 

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。

当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1)。

分享到:
评论

相关推荐

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

    算法的设计需要考虑到时间复杂度和空间复杂度,以确保算法的效率和可行性。 时间复杂度 时间复杂度是用来评估算法执行效率的度量单位。它通常用大O符号表示,例如O(1)、O(logn)、O(n)、O(nlogn)、O(n2)等。时间...

    算法设计与分析:05 算法分析与问题的计算复杂度.pdf

    计算复杂度是算法分析中一个重要概念,它衡量了算法执行的时间或空间复杂度。本文将详细介绍算法分析和计算复杂度的概念,以及相关的知识点。 一、算法分析的重要性 算法分析是计算机科学中的一种重要技术,它可以...

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

    空间复杂度和时间复杂度的权衡是算法设计中的一个核心问题。开发者需要根据具体问题和运行环境来做出合理的选择。本文通过实例分析和策略讨论,希望能够帮助读者更好地理解权衡的概念,并在实际开发中做出明智的决策...

    聚类算法的时间与空间复杂度:性能分析的关键指标

    聚类算法是数据挖掘和机器学习中用于将数据点分组的无监督学习方法。这些算法的性能评估不仅取决于...希望读者能够通过本文,对聚类算法的时间和空间复杂度有更深入的理解,并在实际项目中做出合理的算法选择和优化。

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

    空间复杂度的分析方法与时间复杂度类似,都是关注问题规模 \( n \) 增大时的变化趋势。 #### 三、总结 - **时间复杂度** 关注的是算法执行时间随问题规模变化的趋势,而 **空间复杂度** 关注的是算法执行过程中...

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

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

    算法复杂度原理

    2. 空间复杂度:空间复杂度是算法执行期间占用内存资源的度量。同样使用大O记法表示,如O(1)、O(n)等。理解空间复杂度可以帮助我们评估算法对内存的需求,特别是在资源有限的环境下。 3. 最好、最坏和平均情况:一...

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

    与时间复杂度类似,空间复杂度也是评估算法效率的重要标准之一。 - **空间复杂度的计算方法**:空间复杂度主要关注额外的存储需求,即除了输入数据本身之外的额外存储空间。例如,如果一个算法使用了一个额外的数组...

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

    在信息学奥赛中,算法的时间复杂度和空间复杂度是衡量算法效率的重要指标,尤其对于青少年编程者来说,理解并掌握这两点至关重要。算法效率分析主要包括时间效率和空间效率,它们分别对应于时间复杂度和空间复杂度的...

    数据结构、算法总结、学习算法的时间复杂度、空间复杂度、分析算法特点以及应用、Java面试难题、Android面试难题.zip

    3. **时间复杂度与空间复杂度**:时间复杂度是衡量算法运行速度的一个标准,它表示算法执行时间与输入数据规模的增长关系。空间复杂度则关注算法在运行过程中所占用的内存空间。通常,我们希望设计出时间复杂度较低...

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

    时间复杂度是用来衡量算法运行效率的重要指标,它描述了算法执行时间与输入数据规模之间的关系。在设计算法时,我们通常希望找到时间复杂度较低的解决方案,因为这将使得算法在处理大数据时更有效率。例如,O(n)表示...

    大O表示法与算法复杂度分析:深入理解与应用指南

    通过本文的介绍,我们学习了大O表示法的基本概念、分类、以及如何使用它来分析算法的时间复杂度和空间复杂度。掌握大O表示法可以帮助开发者在实际工作中选择合适的算法,优化程序性能,提高软件开发的效率和质量。 ...

    算法的时间复杂度分析

    3. **空间复杂度**:执行算法所需的存储空间,尤其是额外的存储空间。 4. **可读性**:算法应该容易理解、编写和维护。 本文主要关注的是算法的时间复杂度,这是衡量算法效率的一个关键指标。 ##### 1.2 算法性能...

    时间复杂度的理解

    算法复杂度分为时间复杂度和空间复杂度。其作用:时间复杂度是指执行这个算法所需要的计算工作量(执行时间);而空间复杂度是指执行这个算法所需要的内存空间。时间和空间(即寄存器)都是计算机资源的重要体现,而...

    排序算法、时间对比及时间复杂度直线拟合

    时间复杂度直线拟合则是一种统计方法,用于分析算法的运行时间与问题规模之间的关系,通常通过线性回归分析来近似算法的时间复杂度曲线。 在实际编程中,了解这些排序算法的特性和适用场景很重要。例如,如果数据...

    数据结构与算法——算法、时间空间复杂度、线性表 定义线性表节点的结构.pdf

    数据结构与算法——算法、时间空间复杂度、线性表定义线性表节点的结构 以下是根据给定的文件信息生成的相关知识点: 算法 算法是解决问题的步骤序列,以便在有限的时间和空间内获得期望的结果。算法可以分为不同...

    算法复杂度分析基础课件

    2. 空间复杂度:评估算法在执行过程中占用内存资源的增长速度。它同样关注随着n的增加,算法所需的额外存储空间f(n)的上限。 二、大O表示法 大O表示法是描述时间复杂度的常用符号,用来表示算法复杂度的上界。如果...

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

    空间复杂度与时间复杂度类似,但它衡量的是算法运行所需的存储空间量。算法的空间复杂度也用大O符号表示,并且反映了随着输入规模的增加,算法所需的额外空间的变化趋势。 文章中提到的“时间频度”指的是算法中...

    排序算法时间复杂度的分析java语言描述

    - 时间复杂度:快速排序的平均时间复杂度为O(n log n),但在最坏情况下(输入序列已排序或逆序)时间复杂度为O(n²)。通常,快速排序被认为是实际应用中最快的排序算法之一。 5. **插入排序(Insertion Sort)** ...

    NOIP普及组 提高组 CSP-J CSP-S初赛 算法的时间复杂度部分题目.pdf

    它涉及到算法的时间复杂度、空间复杂度、正确性等方面。我们可以使用递归式、主定理、递推关系式等工具来设计和分析算法。 该文件涵盖了算法时间复杂度、排序算法的稳定性、递归式和主定理、递推关系式等知识点。...

Global site tag (gtag.js) - Google Analytics