渐进时间复杂度的计算
算法渐进表达式的求法

算法渐进表达式的求法算法渐进表达式是用来描述算法时间复杂度的一种数学表示方法,通常使用大O记号表示。
算法渐进表达式可以帮助我们分析和比较不同算法的时间效率,从而选择最优解决方案。
求解算法渐进表达式需要考虑以下几个因素:1.基本操作数量在分析算法的时间复杂度时,需要确定一个基本操作的数量。
基本操作是指执行一次运算所需的最小单位操作数。
例如,在排序算法中,比较两个元素就是一个基本操作。
2.输入数据规模输入数据规模也是影响算法时间复杂度的重要因素。
通常情况下,输入数据规模越大,算法所需的时间就越长。
3.最坏情况下的执行次数在分析算法时间复杂度时,需要考虑最坏情况下执行次数。
这是因为在实际应用中,我们需要保证算法总是能够在最坏情况下保证正确性和效率。
4.运行时间增长率运行时间增长率是指随着输入数据规模n增加,算法所需运行时间的增长速度。
通常情况下,我们关注最高次项系数即可。
根据以上因素,可以使用以下步骤求解算法渐进表达式:1.确定基本操作数量首先需要确定算法中的基本操作数量。
这通常需要对算法进行逐行分析,找出执行次数最多的操作。
例如,在冒泡排序算法中,比较两个元素是一次基本操作,交换两个元素是两次基本操作。
2.确定最坏情况下的执行次数在分析算法时间复杂度时,需要考虑最坏情况下执行次数。
这可以通过对算法进行逐行分析并计算每行代码的执行次数来得出。
例如,在冒泡排序算法中,最坏情况下需要比较n-1轮,每轮比较n-i-1次,因此总共需要比较(n-1)+(n-2)+...+1 = n*(n-1)/2 次。
同时还需要进行交换操作,最坏情况下也需要进行(n-1)*(n-2)/2 次交换。
3.计算运行时间增长率根据基本操作数量和最坏情况下的执行次数,可以计算出运行时间增长率。
通常情况下,我们只关注最高次项系数即可。
例如,在冒泡排序算法中,总共需要进行约(n^2)/2 次基本操作(比较和交换),因此时间复杂度为O(n^2)。
算法的渐进复杂度分析

算法优化可以降低算法的渐进复杂度, 从而提高算法的效率。常见的算法优化 方法包括选择更高效的算法、减少重复 计算、使用更有效的数据结构等。
算法优化可以减少算法在处理大规模数据时 的计算量和时间复杂度,从而提高算法的实 用性。
算法优化可以改进算法的并行性和 分布式计算能力,从而更好地利用 多核处理器和分布式计算资源,提 高算法的执行效率。
在游戏开发中的算法选择与渐进复杂度分析
要点一
总结词
要点二
详细描述
游戏开发中,算法的渐进复杂度分析有助于优化游戏性能 和提升用户体验。
游戏开发中,算法的选择直接影响到游戏的运行效率和性 能表现。渐进复杂度分析可以帮助我们评估不同算法在游 戏中的性能表现,从而选择适合的算法来优化游戏性能。 例如,对于游戏物理引擎,可以使用碰撞检测和碰撞响应 算法来提高游戏交互性和真实性;对于游戏渲染,可以采 用光线追踪和阴影渲染等技术来提升画面质量和用户体验 。
渐进复杂度分析可以用于比较不同算 法的性能,为实际应用中选择合适的 算法提供依据。
促进学科发展
渐进复杂度分析是计算科学领域的重 要研究方向之一,对算法设计和分析 理论的发展具有重要意义。
未来研究方向与挑战
探索更复杂的算法模型
随着计算科学的发展,越来越多的复杂算法涌现出来,需 要发展更精确、更复杂的渐进复杂度分析方法来评估这些 算法的性能。
THANKS.
渐进复杂度通常用大O表示法来表示 ,例如O(n)、O(n^2)、O(log n)等, 其中n表示输入规模。
为什么关心算法的渐进复杂度
01
算法的效率是衡量算法好坏的重 要标准之一,而渐进复杂度是评 估算法效率的重要指标。
02
通过分析算法的渐进复杂度,可 以了解算法在不同规模输入下的 性能表现,从而在实际应用中选 择合适的算法。
递归公式的渐进上下界 定理解析

递归公式的渐进上下界定理解析
递归公式的渐进上下界是用来估计递归算法的时间复杂度的重
要工具。
该定理通过比较递归算法的递推公式与一些已知的递归关系,给出了递归算法时间复杂度的上下界。
递归公式的渐进上下界定理通常分为两个部分:渐进上界定理和渐进下界定理。
渐进上界定理:给定一个递归算法的递推公式,如果存在一个函数g(n),使得递推公式的解f(n)满足f(n)<=g(n),那么递推公式的时间复杂度的渐进上界为O(g(n))。
渐进下界定理:给定一个递归算法的递推公式,如果存在一个函数h(n),使得递推公式的解f(n)满足f(n)>=h(n),那么递推公式的时间复杂度的渐进下界为Ω(h(n))。
通过这两个定理,我们可以得到递归算法的时间复杂度的渐进界。
具体的做法是,通过求解递推公式的解,并找到合适的上界函数和下界函数,然后使用大O和Ω符号来表示递归算法的时间复杂度的上下界。
需要注意的是,渐进上界和渐进下界是针对最坏情况下的时间复杂度的估计。
在实际应用中,我们通常更关心的是平均情况下的时间复杂度,这就需要更加详细的分析和估计。
算法渐进表达式的求法

算法渐进表达式的求法算法渐进表达式是用来描述算法时间复杂度的一种形式化表示方法。
在计算机科学中,算法的时间复杂度是指执行算法所需的时间与输入规模之间的关系。
通常用大O符号来表示,表示算法的最坏情况下的运行时间。
求算法渐进表达式的方法有多种,下面将介绍其中的几种常用方法。
1. 基本操作计数法:通过对算法中基本操作的计数来求解算法的时间复杂度。
基本操作是指算法中执行一次所需的时间是固定的。
例如,对于一个循环,每次执行的时间是固定的,那么循环的执行次数乘以每次执行的时间就是算法的时间复杂度。
2. 循环法:对于包含循环结构的算法,可以通过循环的次数来求解算法的时间复杂度。
对于一个循环,可以通过分析循环的条件和循环体中的操作来确定循环的执行次数,进而求解时间复杂度。
3. 递归法:对于递归算法,可以通过递归的深度和每层递归的操作数量来求解时间复杂度。
递归的时间复杂度一般通过递推关系式来表示,然后通过求解递推关系式来得到时间复杂度。
4. 分析法:对于复杂的算法,可以通过对算法的整体结构进行分析来求解时间复杂度。
例如,可以通过分析算法中各个部分的时间复杂度,然后取最大值作为算法的时间复杂度。
在实际应用中,求解算法渐进表达式一般需要根据算法的具体实现和输入规模进行分析。
可以通过手工计算、代码分析或者利用工具进行求解。
在求解过程中,需要注意算法中各个部分的执行次数、循环的条件和循环体中的操作、递归的深度等因素,以及它们与输入规模之间的关系。
通过求解算法渐进表达式,可以对算法的时间复杂度进行评估和比较。
时间复杂度越小,算法的效率越高。
因此,在设计和实现算法时,需要尽量选择时间复杂度较低的算法,以提高算法的执行效率。
求解算法渐进表达式是一项重要的任务,可以帮助我们评估和比较不同算法的效率。
通过合理选择求解方法和仔细分析算法的执行过程,可以准确求解算法的时间复杂度,从而为算法的设计和优化提供指导。
希望本文对读者对算法渐进表达式的求法有所帮助。
算法时间复杂度的计算公式

算法时间复杂度的计算公式
算法时间复杂度是衡量算法效率的重要指标,它是指算法运行时间随着问题规模的增大而增长的速度。
计算算法时间复杂度需要考虑以下几个因素:
1. 循环结构的次数:算法中循环结构执行的次数是影响时间复杂度的重要因素之一。
2. 嵌套循环结构:如果算法中有多个嵌套循环结构,那么时间复杂度的计算就要考虑这些循环的嵌套次数。
3. 条件判断语句:如果算法中有条件判断语句,那么时间复杂度的计算需要根据条件的判断次数进行计算。
4. 递归调用:如果算法中有递归调用,那么时间复杂度的计算需要根据递归的次数进行计算。
算法时间复杂度的计算公式可以表示为:
T(n) = O(f(n))
其中,T(n)表示算法的时间复杂度,f(n)表示算法执行的时间,O表示算法的渐进时间复杂度。
根据算法的实际情况,可以通过分析算法中循环结构的次数、嵌套次数、条件判断次数、递归次数等因素,来确定算法的时间复杂度。
- 1 -。
时间复杂度详解

时间复杂度详解时间复杂度详解什么是时间复杂度•时间复杂度是一种衡量算法执行效率的方式。
•它表示算法的运行时间与输入大小的关系,为我们提供了衡量算法性能的指标。
时间复杂度的表示•时间复杂度使用大O符号(O)来表示。
•O(n)表示算法的时间复杂度与输入规模n成正比。
常见的时间复杂度•O(1):常数时间复杂度,无论输入规模的大小,算法的执行时间都保持不变。
•O(log n):对数时间复杂度,随着输入规模的增加,算法的执行时间逐渐增长,但增长速度很慢。
•O(n):线性时间复杂度,算法的执行时间与输入规模n成比例增长。
•O(n log n):线性对数时间复杂度,随着输入规模的增加,算法的执行时间逐渐增长,但增长速度比O(n)慢。
•O(n^2):平方时间复杂度,算法的执行时间与输入规模n的平方成比例增长。
•O(2^n):指数时间复杂度,算法的执行时间随着输入规模n的增加而急剧增长。
•O(n!):阶乘时间复杂度,算法的执行时间随着输入规模n的增加而急剧增长。
如何计算时间复杂度•首先,确定算法的基本操作。
•其次,根据算法的基本操作,分析每个操作的时间复杂度。
•最后,根据每个操作的时间复杂度,确定整个算法的时间复杂度。
如何选择合适的算法•在设计算法时,我们应该选择时间复杂度低的算法。
•当输入规模较小时,可以选用时间复杂度较高但简单易懂的算法。
•当输入规模较大时,应该尽量选择时间复杂度较低的算法。
总结•时间复杂度是一种衡量算法执行效率的方式,它表示算法的运行时间与输入规模的关系。
•常见的时间复杂度包括常数时间复杂度、对数时间复杂度、线性时间复杂度等。
•计算时间复杂度的步骤包括确定算法的基本操作、分析每个操作的时间复杂度以及确定整体的时间复杂度。
•在选择算法时,应该根据输入规模选择合适的时间复杂度。
参考资料:[腾讯课堂-计算机科学与技术](。
算法时间复杂度计算公式

算法时间复杂度计算公式算法(Algorithm)是指⽤来操作数据、解决程序问题的⼀组⽅法。
对于同⼀个问题,使⽤不同的算法,也许最终得到的结果是⼀样的,但在过程中消耗的资源和时间却会有很⼤的区别。
那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占⽤的「时间」和「空间」两个维度去考量。
时间维度:是指执⾏当前算法所消耗的时间,我们通常⽤「时间复杂度」来描述。
空间维度:是指执⾏当前算法需要占⽤多少内存空间,我们通常⽤「空间复杂度」来描述。
因此,评价⼀个算法的效率主要是看它的时间复杂度和空间复杂度情况。
然⽽,有的时候时间和空间却⼜是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取⼀个平衡点。
下⾯我来分别介绍⼀下「时间复杂度」和「空间复杂度」的计算⽅式。
⼀、时间复杂度我们想要知道⼀个算法的「时间复杂度」,很多⼈⾸先想到的的⽅法就是把这个算法程序运⾏⼀遍,那么它所消耗的时间就⾃然⽽然知道了。
这种⽅式可以吗?当然可以,不过它也有很多弊端。
这种⽅式⾮常容易受运⾏环境的影响,在性能⾼的机器上跑出来的结果与在性能低的机器上跑的结果相差会很⼤。
⽽且对测试时使⽤的数据规模也有很⼤关系。
再者,并我们在写算法的时候,还没有办法完整的去运⾏呢。
因此,另⼀种更为通⽤的⽅法就出来了:「⼤O符号表⽰法」,即 T(n) = O(f(n))我们先来看个例⼦:for(i=1; i<=n; ++i){j = i;j++;}通过「⼤O符号表⽰法」,这段代码的时间复杂度为:O(n) ,为什么呢?在⼤O符号表⽰法中,时间复杂度的公式是: T(n) = O( f(n) ),其中f(n) 表⽰每⾏代码执⾏次数之和,⽽ O 表⽰正⽐例关系,这个公式的全称是:算法的渐进时间复杂度。
我们继续看上⾯的例⼦,假设每⾏代码的执⾏时间都是⼀样的,我们⽤ 1颗粒时间来表⽰,那么这个例⼦的第⼀⾏耗时是1个颗粒时间,第三⾏的执⾏时间是 n个颗粒时间,第四⾏的执⾏时间也是 n个颗粒时间(第⼆⾏和第五⾏是符号,暂时忽略),那么总时间就是 1颗粒时间 + n颗粒时间 + n颗粒时间,即 (1+2n)个颗粒时间,即: T(n) = (1+2n)*颗粒时间,从这个结果可以看出,这个算法的耗时是随着n的变化⽽变化,因此,我们可以简化的将这个算法的时间复杂度表⽰为:T(n) = O(n)为什么可以这么去简化呢,因为⼤O符号表⽰法并不是⽤于来真实代表算法的执⾏时间的,它是⽤来表⽰代码执⾏时间的增长变化趋势的。
递归算法时间复杂度计算

递归算法时间复杂度计算
递归算法是一种通过函数调用自身来解决问题的算法。
在计算递归算法的时间复杂度时,通常要考虑递归调用的次数及每次递归调用所需的时间复杂度。
具体来说,递归算法的时间复杂度可以用如下公式表示:
T(n) = aT(n/b) + O(f(n))
其中,a是递归调用的次数,n/b表示每次递归所处理的数据规模,f(n)表示除了递归调用外,剩余操作的时间复杂度。
根据主定理,如果a=1,b=2,则时间复杂度为O(log n);如果a>1,b=1,则时间复杂度为O(n^logb a);如果a<1,则时间复杂度为O(1)。
需要注意的是,递归调用次数可能会对时间复杂度产生重大影响,因此需要尽可能的减少递归调用次数。
总之,计算递归算法的时间复杂度需要确定递归调用次数、每次调用的数据规模以及剩余操作的时间复杂度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时间复杂度计算首先了解一下几个概念。
一个是时间复杂度,一个是渐近时间复杂度。
前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。
此外,算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
但是我们总是考虑在最坏的情况下的时间复杂度。
以保证算法的运行时间不会比它更长。
常见的时间复杂度,按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、k次方阶O(n^k)、指数阶O(2^n)。
1. 大O表示法定义设一个程序的时间复杂度用一个函数 T(n) 来表示,对于一个查找算法,如下:int seqsearch( int a[], const int n, const int x){int i = 0;for (; a[i] != x && i < n ; i++ );if ( i == n) return -1;else return i;}这个程序是将输入的数值顺序地与数组中地元素逐个比较,找出与之相等地元素。
在第一个元素就找到需要比较一次,在第二个元素找到需要比较2次,……,在第n个元素找到需要比较n次。
对于有n个元素的数组,如果每个元素被找到的概率相等,那么查找成功的平均比较次数为:f(n) = 1/n (n + (n-1) + (n-2) + ... + 1) = (n+1)/2 = O(n)这就是传说中的大O函数的原始定义。
用大O来表述要全面分析一个算法,需要考虑算法在最坏和最好的情况下的时间代价,和在平均情况下的时间代价。
对于最坏情况,采用大O表示法的一般提法(注意,这里用的是“一般提法”)是:当且仅当存在正整数c和n0,使得 T(n) <= c*f(n)对于所有的n >= n0 都成立。
则称该算法的渐进时间复杂度为T(n) = O(f(n))。
这个应该是高等数学里面的第一章极限里面的知识。
这里f(n) = (n+1)/2, 那么c * f(n)也就是一个一次函数。
就是在图象上看就是如果这个函数在c*f(n)的下面,就是复杂度为T(n) = O(f(n))。
对于对数级,我们用大O记法记为O(log2N)就可以了。
规则1)加法规则T(n,m) = T1(n) + T2(n) = O ( max (f(n), g(m) )2) 乘法规则T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))3)一个特例在大O表示法里面有一个特例,如果T1(n) =O©, c是一个与n无关的任意常数,T2(n) = O ( f(n) ) 则有T(n) = T1(n) * T2(n) = O ( c*f(n) ) = O( f(n) ).也就是说,在大O表示法中,任何非0正常数都属于同一数量级,记为O(1)。
4)一个经验规则有如下复杂度关系c < log2N < n < n * Log2N < n^2 < n^3 < 2^n < 3^n < n!其中c是一个常量,如果一个算法的复杂度为c 、 log2N 、n 、 n*log2N ,那么这个算法时间效率比较高,如果是 2^n , 3^n ,n!,那么稍微大一些的n就会令这个算法不能动了,居于中间的几个则差强人意.1)基本知识点:没有循环的一段程序的复杂度是常数,一层循环的复杂度是O(n),两层循环的复杂度是O(n^2)? (我用^2表示平方,同理 ^3表示立方);2)二维矩阵的标准差,残差,信息熵,fft2,dwt2,dct2的时间复杂度: 标准差和残差可能O(n),FFT2是O(nlog(n)),DWT2可能也是O(nlog(n));信息熵要求概率,而dct的过程和jpeg一样。
因为和jpeg一样,对二难矩阵处理了.Y=T*X*T',Z=Y.*Mask,这样子,还有分成8*8子图像了;3)example:1、设三个函数f,g,h分别为 f(n)=100n^3+n^2+1000 , g(n)=25n^3+5000n^2 , h(n)=n^1.5+5000nlgn请判断下列关系是否成立:(1) f(n)=O(g(n))(2) g(n)=O(f(n))(3) h(n)=O(n^1.5)(4) h(n)=O(nlgn)这里我们复习一下渐近时间复杂度的表示法T(n)=O(f(n)),这里的"O"是数学符号,它的严格定义是"若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0 ,使得当n≥n0时都满足0≤T(n)≤C?f(n)。
"用容易理解的话说就是这两个函数当整型自变量n趋向于无穷大时,两者的比值是一个不等于0的常数。
这么一来,就好计算了吧。
◆(1)成立。
题中由于两个函数的最高次项都是n^3,因此当n→∞时,两个函数的比值是一个常数,所以这个关系式是成立的。
◆(2)成立。
与上同理。
◆(3)成立。
与上同理。
◆(4)不成立。
由于当n→∞时n^1.5比nlgn递增的快,所以h(n)与nlgn的比值不是常数,故不成立。
2、设n为正整数,利用大"O"记号,将下列程序段的执行时间表示为n的函数。
(1) i=1; k=0while(i<n){ k=k+10*i;i++;}解答:T(n)=n-1, T(n)=O(n),这个函数是按线性阶递增的。
(2) x=n; // n>1while (x>=(y+1)*(y+1))y++;解答:T(n)=n1/2 ,T(n)=O(n1/2),最坏的情况是y=0,那么循环的次数是n1/2次,这是一个按平方根阶递增的函数。
(3) x=91; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;解答: T(n)=O(1),这个程序看起来有点吓人,总共循环运行了1000次,但是我们看到n没有? 没。
这段程序的运行是和n无关的,就算它再循环一万年,我们也不管他,只是一个常数阶的函数。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。
算法分析的目的在于选择合适算法和改进算法。
一个算法的评价主要从时间复杂度和空间复杂度来考虑。
1、时间复杂度(1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。
但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。
并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。
一个算法中的语句执行次数称为语句频度或时间频度。
记为T(n)。
(2)时间复杂度在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。
但有时我们想知道它变化时呈现什么规律。
为此,我们引入时间复杂度概念。
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。
记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。
按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),...,k次方阶O(nk),指数阶O(2n)。
随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
2、空间复杂度与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。
记作:S(n)=O(f(n))我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。
讨论方法与时间复杂度类似,不再赘述。
(3)渐进时间复杂度评价算法时间性能主要用算法时间复杂度的数量级(即算法的渐近时间复杂度)评价一个算法的时间性能。
【例3.7】有两个算法A1和A2求解同一问题,时间复杂度分别是T1(n)=100n2,T2(n)=5n3。
(1)当输入量n<20时,有T1(n)>T2(n),后者花费的时间较少。
(2)随着问题规模n的增大,两个算法的时间开销之比5n3/100n2=n/20亦随着增大。
即当问题规模较大时,算法A1比算法A2要有效地多。
它们的渐近时间复杂度O(n2)和O(n3)从宏观上评价了这两个算法在时间方面的质量。
在算法分析时,往往对算法的时间复杂度和渐近时间复杂度不予区分,而经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。
【例3.8】算法MatrixMultiply的时间复杂度一般为T(n)=O(n3),f(n)=n3是该算法中语句(5)的频度。
下面再举例说明如何求算法的时间复杂度。
【例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)决定的。