今天鞋百科给各位分享时间复杂性的量级怎么算的知识,其中也会对时间复杂度怎么计算?(时间复杂度怎么计算)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧!
时间复杂度怎么计算?
1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))
分析:随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
2. 在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出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的三次方)
时间复杂度怎么计算?
1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))
分析:随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
2. 在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出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的三次方)
如何计算加班时间
超出五天八小时的都属于加班,
新《劳动法》第三十六条 国家实行劳动者每日工作时间不超过八小时、平均每周工作时间不超过四十四小时的工时制度。
一、制度工作时间的计算
年工作日=365天-104天(休息日)-11天(法定节假日)=250天
季工作日=250天÷4季=62.5天/季
月工作日=250天÷12月=20.83天/月
工作小时数=月、季、年的工作日×8小时/日
二、日工资、小时工资的折算
日工资=月工资收入÷月计薪天数
小时工资=月工资收入÷(月计薪天数×8小时)。
月计薪天数=(365天-104天)÷12月=21.75天
注:折算日工资、小时工资时不剔除国家规定的11天法定节假日。
正常工作日延长工作时间的,应当支付不低于150%的工资;
休息日安排加班而没有补休的,应当支付不低于200%的工资;
法定节假日安排加班的,应当支付不低于300%的工资。
如何计算一个算法的时间复杂度?
求解算法的时间复杂度的具体步骤是:
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问题。这只能基本的计算时间复杂度,具体的运行还会与硬件有关。
数据结构导论中算法的时间复杂度的计算
比如下面的代码:
for(i=0;i<100;i++)
sum=sum+i;
很明显,这个循环要做100次,时间复杂度就是100.
for(i=0;i<100;i++)
for(j=0;j<100;j++)
这是双重循环,要执行100×100次,那么时间复杂度就是10000了。