`

【转】时间复杂度

 
阅读更多

举个简单的例子,要从0加到n,我们会这么写:
int sum = 0;
for(int i = 0; i<=n; ++i)
{
   sum += i;
}
一共算了n次加法,那么就说这个时间复杂度是O(n)。当然O(n)的精确的概念是,是n的最高次方,比如,某个计算共计算了3n + 2次,那么这个时间复杂度也是O(n),因为3n + 2中的最高次方是n。

如果代码这么写:
int sum = 0;
for(int i = 0; i<=n; ++i)
{
   for(int j = 0; j <=n; ++j)
   {
      sum += (i + j);
   }
}

很显然一共算了n^2次加法,那么就说这个时间复杂度是O(n^2),和上面类似,如果某个算法计算了3*n^2 + n + 1次,其时间复杂度仍然是O(n^2),因为3*n^2 + n + 1中最高的次方是n^2

所谓O(1)就是计算的次数是个常量,我们还以上面从0加到n的例子来说,如果我们用等差数列的公式,那么,代码可以这么写:
int sum = n * (n + 1) / 2
不管n有多大(当然不能溢出了),通过上面的公式只需计算一次,也就说计算的次数是不变的,这种情况的时间复杂度就可以说成O(1)。 再比如如果某个计算,不管其他条件怎么变化,均只需计算5次即可得出结果,那么这种情况的时间复杂度,也是O(1)。

分享到:
评论

相关推荐

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

    算法时间复杂度的相关知识点 从给定的文件信息中,我们可以看到该文件主要关注算法的时间复杂度,涉及到算法设计、递归式、主定理等概念。下面,我们将对这些知识点进行详细的解释和分析。 一、算法时间复杂度 ...

    第3章 时间复杂度.docx

    时间复杂度是衡量算法效率的重要指标,特别是在大数据处理和计算机科学中。它描述的是随着问题规模n的增长,算法执行时间的增长速率。渐近时间复杂度是常用的形式,它不关注具体数值,而是关注当n趋于无穷大时,时间...

    比较搜索的时间复杂度

    在计算机科学领域,时间复杂度是衡量算法效率的重要指标,它描述了算法执行时间与输入数据量之间的关系。本文将详细探讨三种不同的搜索算法:无序线性表搜索、有序数组的二分查找以及二叉搜索树的实现,这些都是与...

    具有O(n)时间复杂度的分布式请求集生成算法.pdf

    与同样具有O(n)时间复杂度的其他经典算法相比,该算法在保持低时间复杂度的同时,还维持了请求集长度的合理性。这使得该算法在处理大规模分布式系统时,能够有效地平衡性能和资源利用,提高系统的整体效率。 总的来...

    算法复杂度作业2

    - 时间复杂度:表示算法执行过程中基本操作的数量与输入数据规模的关系,通常用大O记法表示,如O(1),O(n),O(n log n)等。 - 空间复杂度:衡量算法运行时所需的内存空间,同样使用大O记法来描述。 2. **Shell**...

    算法所有的时间复杂度1

    在计算机科学中,时间复杂度是对算法运行时间的一种度量,它表示了算法执行时间与问题规模之间的关系。时间复杂度分析是评估算法效率的重要工具,帮助我们选择更优的解决方案。在这个主题中,我们将深入探讨红黑树、...

    算法时间复杂度分析中递归方程求解方法综述

    ### 算法时间复杂度分析中递归方程求解方法综述 #### 引言 在计算机科学领域,递归是一种常见的编程思想和技术,它不仅被广泛应用于各种算法的设计之中,也是评估算法效率的重要工具之一。递归方程在算法的时间...

    时间复杂度初体验.ppt

    在实际应用中,我们尽量避免使用时间复杂度高的算法,转而寻找更高效的解决方案。对于汉诺塔问题,虽然无法找到线性时间复杂度的算法,但可以通过优化策略,如并行化处理,来减少实际的运行时间。 总结来说,时间...

    排序算法优化:时间复杂度比较及性能提升技巧.md

    ### 排序算法优化:时间复杂度比较及性能提升技巧 #### 时间复杂度的重要性 在计算机科学领域,算法的效率是衡量其优劣的关键因素之一。时间复杂度作为评价算法效率的重要指标,揭示了算法执行时间与输入规模之间...

    十进制转化成二进制数实现

    本篇文章将深入探讨如何使用C++编程语言将十进制数转换为二进制数,并分析这种转换的方法及其时间复杂度。 首先,让我们了解十进制和二进制的基本概念。十进制系统基于10个不同的符号(0-9),每个位置的权重是10的...

    复杂度计算(matlab)

    1. **复杂度的概念**:在信号处理领域,复杂度通常被用来衡量一个信号或者时间序列的信息含量、结构复杂性等特性。它可以帮助我们理解信号内部的规律性和随机性的平衡状态。 2. **MATLAB中的复杂度计算函数**:...

    时间序列的复杂度和熵

    ### 时间序列的复杂度和熵 #### 6.1 引言 在现代科学与工程领域,特别是非线性动力学、混沌理论以及数据分析中,时间序列的复杂度和熵成为了重要的研究对象。它们不仅有助于理解系统内部的运作机制,还能帮助识别...

    O n 复杂度实现单链表的逆转

    一个C程序 实现了单链表的逆序 且复杂度为O n

    数据结构第一章答案

    时间复杂度可以用大O符号来表示,如O(n^3)表示算法的时间复杂度是立方的。 1.5 算法的实现 在这里,我们看到一个算法的实现。算法的实现是指使用编程语言将算法转换为可执行的代码。在这里,我们看到一个float型...

    如何测量程序圈复杂度度量

    测试性和可维护性的关键性体现在软件开发过程中:通常情况下,我们花费一半的时间用于测试阶段,并且在系统的维护上投入了大量的成本。为了应对这一挑战,我们需要一种数学技术来提供定量的基础,帮助我们识别那些...

    递归方程组解的渐进阶的求法,算法时间复杂度,迭代算法,递归算法

    递归方程组解的渐进阶的求法是计算机科学与技术中分析算法效率的重要手段,特别是对于理解和优化算法的时间复杂度具有关键作用。在分析递归算法时,我们通常关注在最坏情况下的时间复杂性,这涉及到对递归方程解的...

    全息图的复杂度和体积

    我们显示,如果以从地平线到“最终切片”(乘以普朗克面积)的最大时间为单位进行测量,则可以消除大大小小的黑洞明显缺乏通用性的情况。 这也适用于旋转黑洞。 我们利用守恒的“体积电流”,该体积电流与通过最大...

    js代码-介绍算法时间复杂度

    本主题将深入探讨在JS中如何理解和分析算法的时间复杂度,这是优化代码性能的关键因素。 时间复杂度是衡量算法运行效率的一种数学方法,它表示算法执行所需时间与输入数据规模之间的关系。在JS中,了解时间复杂度有...

    PHP 巧用数组降低程序的时间复杂度

    时间复杂度是评估算法效率的重要指标,它描述了算法执行时间与输入数据规模之间的关系。在Web2.0时代,由于用户对应用响应速度的高要求,优化时间复杂度显得尤为关键。 算法的时间复杂度通常表示为T(n)=O(f(n)),...

Global site tag (gtag.js) - Google Analytics