O(C(n,r)^ 2)的大O运行时复杂度是多少?

时间:2015-07-06 03:12:44

标签: algorithm

我的代码运行O(C(n,r)^2)复杂度。

我意识到C(n,r) = n! / ( r! (n - r)! )但这真的是n!时间复杂度? r值会使其成为因子复杂性,但n值会更复杂,因为O(n^x)给定常量r

具有静态r值和动态n值是否使此解决方案成为O(n^x)O(n!)解决方案?

3 个答案:

答案 0 :(得分:4)

让我们先来看O( C(n,r) ) = O( n! / (r! (n-r)!) )

对于常量 r,我们有:

O( C(n,r) ) = O( n! / (r! (n-r)!) ) = O( n! / (n-r)! )
            = O( n*(n-1)*...*(n-r+1) ) = O( n^r )

因此:

O( C(n,r)^2 ) = O( n^(2r) )

答案 1 :(得分:3)

对于固定的r,复杂性类别为O(n^r)

答案 2 :(得分:2)

O(_)表示单个变量的函数的族(集合,等价类)。如果你想将n ^ r的渐近增长视为n的函数,那么该变量就是n。如果你想把它看作是r的函数,那就是r。在这两种情况下,另一个变量当然会影响第一个变量的这组函数的形状。例如。对于r = 2,该集合将是O(n ^ 2),对于r = 3,它将是O(n ^ 3),通常为O(n ^ r)。