T(n)=n!/((n-k)!) 求时间复杂度O()n的logn次方 的时间复杂度是不是2的N次方
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/29 03:19:38
T(n)=n!/((n-k)!) 求时间复杂度O()n的logn次方 的时间复杂度是不是2的N次方
T(n)=n!/((n-k)!) 求时间复杂度O()
n的logn次方 的时间复杂度是不是2的N次方
T(n)=n!/((n-k)!) 求时间复杂度O()n的logn次方 的时间复杂度是不是2的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(log(2)n),线性阶O(n),
线性对数阶O(nlog(2)n),平方阶O(n^2),立方阶O(n^3),...,
k次方阶O(n^k),指数阶O(2^n).随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低.
算法的时间复杂度
若要比较不同的算法的时间效率,受限要确定一个度量标准,最直接的办法就是将计算法转化为程序,在计算机上运行,通过计算机内部的计时
功能获得精确的时间,然后进行比较.但该方法受计算机的硬件、软件等因素的影响,会掩盖算法本身的优劣,所以一般采用事先分析估算的算法,
即撇开计算机软硬件等因素,只考虑问题的规模(一般用用自然数n表示),认为一个特定的算法的时间复杂度,只采取于问题的规模,或者说它是
问题的规模的函数.
为了方便比较,通常的做法是,从算法选取一种对于所研究的问题(或算法模型)来说是基本运算的操作,以其重复执行的次数作为评价算法时间
复杂度的标准.该基本操作多数情况下是由算法最深层环内的语句表示的,基本操作的执行次数实际上就是相应语句的执行次数.
一般 T(n)=O(f(n))
O(1)