`
yongjian1092
  • 浏览: 40851 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

数据结构:算法的时间复杂度求法

 
阅读更多

1.时间频度
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
2.举例说明:
【例3.9】交换i和j的内容。
Temp=i;
i=j;
j=temp;

  以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。
如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

【例3.10】变量计数之一。
(1) x=0;y=0;
(2) for(k-1;k<=n;k++)
(3) x++;
(4) for(i=1;i<=n;i++)
(5) for(j=1;j<=n;j++)
(6) y++;

  一般情况下,对步进循环语句只需考虑循环体中语句的执行次数,忽略该语句中步长加1、终值判别、控制转移等成分。因此,以上程序段中频度最大的语句是(6),其频度为f(n)=n2,所以该程序段的时间复杂度为T(n)=O(n2)。
  当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。

【例3.11】变量计数之二。
(1) x=1;
(2) for(i=1;i<=n;i++)
(3) for(j=1;j<=i;j++)
(4) for(k=1;k<=j;k++)
(5) x++;

  该程序段中频度最大的语句是(5),内循环的执行次数虽然与问题规模n没有直接关系,但是却与外层循环的变量取值有关,而最外层循环的次数直接与n有关,因此可以从内层循环向外层分析语句(5)的执行次数:则该程序段的时间复杂度为T(n)=O(n3/6+低次项)=O(n3)。


总结:计算算法的时间复杂度首先要计算出该算法执行的次数(频度),再与其他的语句进行比较。最大的就是该算法的时间复杂度

分享到:
评论

相关推荐

    深度解析:数据结构算法时间复杂度分析指南

    在计算机科学中,算法的...本文详细介绍了时间复杂度分析的重要性和方法,通过具体示例展示了如何对不同数据结构和算法进行时间复杂度分析。希望这能帮助读者更好地理解时间复杂度的概念,提高算法分析和设计的能力。

    算法-数据结构和算法-1-算法的引入和算法时间复杂度.rar

    这个压缩包文件"算法-数据结构和算法-1-算法的引入和算法时间复杂度.rar"主要探讨了这两个概念的入门知识,特别是关注算法的时间复杂度分析。 首先,我们需要理解什么是算法。算法是一系列明确的步骤或指令,用于...

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

    Niklaus Wirth曾经说过:“程序=数据结构+算法”,这句话强调了算法在程序设计中的重要性。 算法概念 算法是一种计算过程,解决问题的方法。它可以是递归的,也可以是迭代的。算法的设计需要考虑到时间复杂度和...

    数据结构算法复杂度题目答案

    在计算机科学中,数据结构和算法的复杂度分析是至关重要的,因为它可以帮助我们评估程序的效率,预测其在大规模数据下的表现。以下是给定题目中涉及的一些知识点。 1. 大O符号(Big-Oh)表示法:大O符号是用来描述...

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

    - 若算法仅使用几个变量进行计算,不涉及额外的数据结构,则空间复杂度为 \( O(1) \)。 #### 四、实例分析 假设我们要分析以下两个代码段的时间复杂度: 1. **单层循环:** ```plaintext for(int i = 0; i ; +...

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

    时间复杂度的计算是为了比较算法的运行时间和空间要求,并使这种比较能与程序设计语言、编译系统、机器结构、处理器的速度及系统的负载等复杂因素无关。 在实际中,算法的时间复杂度可以分为常数阶、对数阶、线性阶...

    时间复杂度与数据结构:算法效率的双重奏

    时间复杂度是衡量算法效率的重要指标,而数据结构的选择和设计直接影响算法的时间复杂度。通过深入理解时间复杂度的概念、掌握时间复杂度的分析方法,并结合合适的数据结构,我们可以优化算法,提高程序的性能。本文...

    数据结构时间复杂度

    ### 数据结构时间复杂度详解 #### 一、算法时间复杂度定义 在计算机科学中,算法的时间复杂度是一个衡量算法效率的重要指标。它用来描述算法的运行时间与输入数据规模之间的关系。通常,我们关心的是算法运行时间...

    数据结构算法时间复杂度的计算.doc

    以下是计算数据结构算法时间复杂度的详细步骤和规则: 1. **定义**: - 时间复杂度T(n)是算法执行基本操作的次数与问题规模n之间的关系。当n趋向于无穷大时,T(n)与某个辅助函数f(n)的比值的极限如果是一个不为零...

    算法时间复杂度

    在数据结构和算法领域,理解时间复杂度对于优化算法、提高系统性能至关重要。 ### 时间复杂度的定义 当一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数,T(n)被称为这一算法的“时间...

    排序算法时间复杂度的研究.pdf

    堆排序是一种基于二叉堆数据结构的比较排序算法。它的基本思路是首先构建一个大顶堆(或小顶堆),然后不断地移除堆顶元素放到已排序序列的末尾,并重新调整剩余元素使其继续保持堆的特性。 **时间复杂度分析**: -...

    速查表:常用算法和时间复杂度,算法数据结构

    在给定的数据中提到了几种数据结构和对应的时间复杂度: 1. **排序数组**:对于已排序的数组,可以使用二分查找算法,其时间复杂度为O(log(n)),在最差情况下(数组未排序)可能需要线性扫描,时间复杂度为O(n)。 ...

    数据结构的基本概念和术语,算法的时间复杂度.html

    数据结构的基本概念和术语,算法的时间复杂度,讲述了数据结构的一些概念点,也就是最基本的一些东西,还有如何计算算法的时间复杂度之类的一些问题及举例

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

    ### 数据结构中的时间复杂度与空间复杂度 #### 引言 数据结构和算法是编程领域的核心组成部分。数据结构指的是组织、管理和存储数据的方式,而算法则是解决特定问题的一系列步骤。两者之间的关系紧密,相互依赖。...

    数据结构与算法复杂度速查表.zip

    数据结构与算法复杂度速查表是编程领域中非常实用的工具,尤其对于优化代码性能和理解算法效率至关重要。这份资料包含了一个详细的表格,用于快速查看各种常见数据结构(如数组、链表、栈、队列、树、图等)以及算法...

    数据结构时间复杂度超详细概念解析(附实例)

    数据结构时间复杂度超详细概念解析 数据结构是计算机科学中一个非常重要的概念,而时间复杂度是数据结构中一个非常重要的分析方法。时间复杂度是指算法执行时间随输入规模增长而增长的量级,它是评价算法优劣的重要...

    分析算法时间复杂度java.zip

    在这个"分析算法时间复杂度java.zip"文件中,我们可以预期包含的是关于如何在Java中分析和理解各种算法时间复杂度的相关资源,比如数据结构的实现及其时间复杂度分析。 数据结构是存储和组织数据的特定方式,它们对...

    算法复杂度原理

    1. 时间复杂度:时间复杂度是描述算法运行过程中基本操作的执行次数。常用的大O记法表示,如O(1)、O(logn)、O(n)、O(nlogn)、O(n^2)等,分别代表常数时间、对数时间、线性时间、线性对数时间和平方时间。理解这些...

    分析算法时间复杂度.zip

    4. 算法优化:通过改进算法结构或使用数据结构(如哈希表、堆、树等)来降低时间复杂度,是提高程序效率的重要手段。 5. 时间复杂度分析技巧:包括主项分析、忽略低阶项、常数因子约简等,帮助我们简化表达式,准确...

Global site tag (gtag.js) - Google Analytics