算法的时间复杂度?

作者&投稿:藩骅 (若有异议请与网页底部的电邮联系)
如何计算一个算法的时间复杂度?~

求解算法的时间复杂度的具体步骤是:
1、找出算法中的基本语句:
算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
2、计算基本语句的执行次数的数量级:
(1)只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。
(2)这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
3、用大Ο记号表示算法的时间性能:
(1)将基本语句执行次数的数量级放入大Ο记号中。
(2) 如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:
for(i=1;i<=n;i++)  x++;  for(i=1;i<=n;i++)for(j=1;j<=n;j++)  x++; 
(3)第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。
常见的算法时间复杂度由小到大依次为:
Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。Ο(log2n)、Ο(n)、Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2n)和Ο(n!)称为指数时间。计算机科学家普遍认为前者是有效算法,把这类问题称为P类问题,而把后者称为NP问题。这只能基本的计算时间复杂度,具体的运行还会与硬件有关。

时间复杂度表面的意思就是代码花费的时间,但是一般使用这个概念的时候,更注重的是随着数据量增长,代码执行时间的增长情况。一般认为一个基本的运算为一次运行算,例如加减乘除判断等等
例1和例2时间复杂度都可以简单认为是o(N),一般用时间复杂度的时候要取一个下限即可,不用那么精确,可能你认为例1是o(2N)而例2是o(n),但实际上这两者对于时间复杂度的作用来说没区别,前面已经说了,时间复杂度关注的是数据量的增长导致的时间增长情况,o(2N)和o(n)在数据量增加一倍的时候,时间开销都是增加一倍(线性增长)。

又例如两重循环的时间复杂度是o(N的平方),N扩大一倍,时间复杂度就扩大4倍。所以时间复杂度主要是研究增长的问题,一般效率较好的算法要控制在o(N)或者o(log2N)

时间复杂度的表示: O(执行次数)

一个有序的元素列表查找某个元素可以用二分查找,每次取中间元素进行比较大小,直到相等。因为每次不符合时总会排除一半的元素 ,所以查找的次数为log2n,那么时间复杂度为O(log2n)。如果是一个无序的元素列表,查找从位置0开始,那么简单查找的次数为n,那么时间复杂度为O(n)。

除此之外快速排序为O(n*log2n),选择排序为O(n*n)。

旅行算法就是n个旅行地点,你可从某个地方出发到余下某下一个地点,走完所有地点。从最开始时走有n个地点可以选择,接下来再走就有n-1个地点可以选择,这样直到只有一个地点可以选择。那么所有你可走的路径就是一个阶乘,选择复杂度为O( n!)。

关于数组和链表的操作。先说数组,因为你有了元素的索引,可以随机访问,你就能快速找到这个元素,而且所有元素的读取都是一样的步骤,所以读取时间复杂度为O(1),数组的插入和删除的时间复杂度为O(n),因为要移动元素。链表的特性是每个都存储了下一个元素的地址,只能顺序访问。那么读取插入删除的时间复杂度分别是O(n)、O(1)、O(1)。




什么是算法的时间复杂度?
时间复杂度是一个函数,它定量描述了该算法的运行时间。常见的时间复杂度有以下几种。1,log(2)n,n,n log(2)n ,n的平方,n的三次方,2的n次方,n!1指的是常数。即,无论算法的输入n是多大,都不会影响到算法的运行时间。这种是最优的算法。而n!(阶乘)是非常差的算法。当n变大时,...

算法的时间复杂度?
算法的时间复杂度是指算法执行时间与数据规模之间的关系。它通常用于评估算法的效率。常见的时间复杂度包括:常数时间复杂度O、线性时间复杂度O、对数时间复杂度O、线性对数时间复杂度O、平方时间复杂度O等。下面详细介绍算法时间复杂度的概念及其重要性。算法的时间复杂度是对算法执行效率的重要衡量标准。算...

算法的时间复杂度是指什么
算法时间复杂度是指在分析算法性能时,关注的是该算法的计算复杂程度。主要是根据算法中基本操作的执行次数来估算算法的效率。算法的时间复杂度在一定程度上衡量了算法的好坏,是在进行算法性能分析时的一项基本指标。2、计算时间复杂度的方法 通过代码分析可以得出一个算法的时间复杂度,一般采用大O表示法。

算法的时间复杂度是什么?
1.语句频度在算法中一个语句的执行次数称为语句频度或时间频度,记为T(n)。2)算法的渐进时间复杂度一般情况下,算法的执行时间T是问题规模n的函数,记作T(n)。要精确地表示算法的运行时间函数常常是很困难的,即使能够给出,也可能是个相当复杂的函数,函数的求解本身也是相当复杂的。为了客观地...

算法的时间复杂度是指什么
时间复杂度是指执行算法所需要的计算工作量。算法复杂度分为时间复杂度和空间复杂度。其作用:时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂...

什么是算法的时间复杂度?
以下因素会影响算法的时间复杂度:1、循环次数:算法中的循环次数会对时间复杂度产生直接影响。循环次数越多,算法的时间复杂度通常越高。2、条件判断:算法中的条件判断语句(如if语句)也会对时间复杂度产生影响。条件判断的次数越多,算法的时间复杂度通常越高。3、递归调用:如果算法中包含递归调用,...

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

什么是算法的时间复杂度?
算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。算法的时间复杂度取决于什么 算法的时间复杂...

算法的时间复杂度是指什么?
算法的时间复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。时间复杂度:(1)时间频度:一个算法执行所耗费的时间,...

算法的时间复杂度指的是什么?
计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。空间复杂度对一个算法...

昌都县15626281798: 算法的时间复杂度怎样计算?举例子详细说明,谢谢. -
夫莫复方: for(i=0;i<m;i++) for(j=0;j<n;j++) 时间复杂度为m*n 在算法设计和数据结构里都有时间复杂度一说,所以要是真的想搞清楚的话,就是找几个例子自己好好对比一下,记住定义才是最关键的!

昌都县15626281798: 如何计算一个算法的时间复杂度 -
夫莫复方: 求解算法的时间复杂度的具体步骤是: 1、找出算法中的基本语句: 算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体. 2、计算基本语句的执行次数的数量级: (1)只需计算基本语句执行次数的数量级,这就意味着...

昌都县15626281798: 有关算法的时间复杂度 -
夫莫复方: N的3次方是指这里举的例子:“两个n阶矩阵相乘”而言. 它说,这个问题的“规模”等于矩阵的阶数 n . 两个n阶矩阵相乘的基本运算(两个实数的乘法)次数正好是阶数的三次方. f (n) = n ^ 3 .矩阵乘法程序见: http://zhidao.baidu.com/question/9394030.html别的算法的时间复杂度=算法的工作量=f (n) f (n) 是什么,要看算什么,怎么算,才知道.未必是N的3次方.

昌都县15626281798: 算法的时间复杂度 -
夫莫复方: 算法结束时便是 i==N了, 而i的增长通向是 i=2^M =N, M是你循环了多少次,因而 M=LogN. 算法时间复杂度为 O(LogN)

昌都县15626281798: 算法的时间复杂性是指( ). -
夫莫复方: 算法的复杂度分时间复杂度和空间复杂度. 时间复杂度:在运行算法时所耗费的时间为f(n)(即 n的函数). 空间复杂度:实现算法所占用的空间为g(n)(也为n的函数).

昌都县15626281798: 算法复杂度的时间复杂度 -
夫莫复方: (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间...

昌都县15626281798: 如何清晰的理解算法中的时间复杂度 -
夫莫复方: 求解算法的时间复杂度的具体步骤是: e69da5e6ba903231313335323631343130323136353331333363393632⑴找出算法中的基本语句; 算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体. ⑵计算基本语句的执行...

昌都县15626281798: 算法的时间复杂度?请哪位大侠给我解释下看一个算法的时间复杂度怎么看啊?是看循环语句的i进行几次运算么?还是别的什么, -
夫莫复方:[答案] 1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花...

昌都县15626281798: 数据结构中算法的时间复杂度是什么? -
夫莫复方: 程序所用时间关于数据规模的函数 比如: 给n个数排序需要n^2的时间 时间复杂度就是O(n^2) 通常有 O(2) 常数 与输入数据规模无关 O(n) 成正比 O(log2n) 平方与数据规模成正比 O(n^2) 与数据规模的平方成正比 O(n^3) ……三次方…… O(n!) 阶乘

昌都县15626281798: 什么是算法的时间复杂度? -
夫莫复方: 时间复杂度表面的意思就是代码花费的时间,但是一般使用这个概念的时候,更注重的是随着数据量增长,代码执行时间的增长情况.一般认为一个基本的运算为一次运行算,例如加减乘除判断等等 例1和例2时间复杂度都可以简单认为是o(N),...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网