什么是时间复杂度。。。

2024-05-20 19:14

1. 什么是时间复杂度。。。

时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。
2. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))
分析:随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
3. 在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级(它的同数量级有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n)=该数量级,若T(n)/f(n)求极限可得到一常数c,则时间复杂度T(n)=O(f(n))例:算法:for(i=1;i<=n;++i){for(j=1;j<=n;++j){c[ i ][ j ]=0; //该步骤属于基本操作 执行次数:n的平方 次
for(k=1;k<=n;++k)
c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n的三次方 次}}则有T(n)= n的平方+n的三次方,根据上面括号里的同数量级,我们可以确定 n的三次方 为T(n)的同数量级
则有f(n)= n的三次方,然后根据T(n)/f(n)求极限可得到常数c则该算法的 时间复杂度:T(n)=O(n的三次方)

什么是时间复杂度。。。

2. 时间复杂度的定义

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)=n^2+3n+4与T(n)=4n^2+2n+1它们的频度不同,但时间复杂度相同,都为O(n^2)。
  按数量级递增排列,常见的时间复杂度有:
  常数阶O(1),对数阶O(log2n),线性阶O(n),
  线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,
  k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
2、空间复杂度

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


如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

3. 时间复杂度是多少

时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数
该程序
S=0;          -------这里是常数O(1),
for(i=0;i<n;i++)     
for(j=0;j<n;j++)
s+=b[i][j]; ----这里是n的平方,用平方阶表示O(n^2)
sum = s;-------这里是常数O(1)
所以上述时间复杂度是T(n) = 两个常数O(1) + n的平方,两个常数相对n的平方来说是低阶项去掉,即常数阶可以去掉忽略不计。
最终时间复杂度是T(n) = O(n^2)

时间复杂度是多少

4. 时间复杂度的定义

在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。

5. 时间复杂度是多少?

时间复杂度是O(n)

for(i=1;i<n;i++);// 由于这里有一个分号,所以执行n次

for(j=1;j<i;j++)// 此时i=n,所以执行n次。
共执行2n次,时间复杂度是O(n)

时间复杂度是多少?

6. 时间复杂度概念

 用时间复杂度、空间复杂度校验一个程序写的好坏。
   给定两个函数 f(n) 和 g(n),如果存在一个整数 N ,使得对于所有的 n>N ,f(n)总是比g(n)大,那么,我们说 f(n)的增长渐近快于g(n)。
   比如:当 n 的值变得非常大的时候,3n+1 已经没法和 2n 2   的结果相比较,最终结果几乎可以忽略不计。
   于是我们得出这样一个结论:判断一个算法的效率时,函数中的常数项和其他次项长可以忽略,更应该关注主项(最高项)的阶数。
   常数阶 O(1) 、线性阶 O(n)、平方阶 O(n 2 )、对数阶 O(logn)、nlogn阶 O(nlogn)、立方阶 O(n 3 )、指数阶 O(2 2 )
   O(1)   <   O(logn)   <   O(n)   <   O(nlogn)   <   O(n 2 )   <   O(n 3 )   <   O(2 n )   <   O(n!)   <   O(n n )
                                           必记的四个:插入排序、堆排序、归并排序、快速排序

7. 时间复杂度

在计算算法时间复杂度时有以下几个简单的程序分析法则:
1.对于一些简单的输入输出语句或赋值语句,近似认为需要O(1)时间
2.对于顺序结构,需要依次执行一系列语句所用的时间可采用大O下"求和法则"
  求和法则:是指若算法的2个部分时间复杂度分别为 T1(n)=O(f(n))和 T2(n)=O(g(n)),则          
  T1(n)+T2(n)=O(max(f(n), g(n)))
 特别地,若T1(m)=O(f(m)), T2(n)=O(g(n)),则 T1(m)+T2(n)=O(f(m) + g(n))
3.对于选择结构,如if语句,它的主要时间耗费是在执行then字句或else字句所用的时间,需注意的是检验条件也需要O(1)时间
4.对于循环结构,循环语句的运行时间主要体现在多次迭代中执行循环体以及检验
 循环条件的时间耗费,一般可用大O下"乘法法则"
 乘法法则: 是指若算法的2个部分时间复杂度分别为 T1(n)=O(f(n))和 T2(n)=O(g(n)),则T1*T2=O(f(n)*g(n))
5.对于复杂的算法,可以将它分成几个容易估算的部分,然后利用求和法则和乘法
 法则技术整个算法的时间复杂度
另外还有以下2个运算法则:
 (1)   若g(n)=O(f(n)),则O(f(n))+ O(g(n))= O(f(n))
 (2)   O(Cf(n)) = O(f(n)),其中C是一个正常数
可以用以上法则对下面程序段进行简单分析
①for (i=0; i<n; i++)
②    for (j=0; j<n; j++)
        {
③       c[i][j] = 0;
④       for (k=0; k<n; k++)
 ⑤           c[i][j]= c[i][j]+ a[i][k]* b[k][j];/ * T5(n) = O(1) */
        }
第①条与②③④⑤是循环嵌套T1(n)*T2(n)* (T3(n)+ T4(n)* T5(n))= O(n*n*n)
 
 
 
即为整个算法的时间复杂度
 
O(1)<O(log2n)<O(n)<O(n log2 n)<O(n^2)<O(n^3)<O(2^n)

时间复杂度

8. 关于时间复杂度

n2 > n > logn
因为 nlogn = logn2
所以 logn<nlogn
 所以O(logn)复杂性最小,执行时间最短
最新文章
热门文章
推荐阅读