算法时间复杂度详解

文章目录

  • 1:master公式的用法
  • 2:实际例子
    • 2-1:用分治法解决一个规模为N的问题。若每步将问题分成规模均为N/3的8个子问题,且治而得到解的步骤耗时O(N^2logN),则整个算法的时间复杂度为
    • 2-2:用分治法解决一个规模为N的问题。下列哪种方法是最慢的?
    • 2-3:给定程序时间复杂度的递推公式:T(1)=1,T(N)=2T(N/2)+ N。则对该程序时间复杂度最接近的描述是:
    • 2-4:用分治法解决一个规模为N的问题时,若每步将问题划分为4个规模为N/2的子问题,并且用O(N^2logN)的时间执行治。则下列哪项最接近于整体时间复杂度?

1:master公式的用法




T(N) = a * T(N / b) + f(N) (f(N) 为多项式 Nd …)


(1)log(b, a) > d ==> 时间复杂度为O(Nlog(b,a))


(2)log(b, a) = d ==> 时间复杂度为O(Nd * log(N))


(3)log(b, a) < d ==> 时间复杂度为f(N)

2:实际例子

2-1:用分治法解决一个规模为N的问题。若每步将问题分成规模均为N/3的8个子问题,且治而得到解的步骤耗时O(N^2logN),则整个算法的时间复杂度为

解析:T(N) = 8(N / 3) + (N2)
可得:a = 8, b = 3, d = 2
log(3, 8) < 2 ==> 时间复杂度为O(N2logN)

A. O(N2logN)

B. O(N2log2N)
C.O(N3logN)
D.O(Nlog8/log3)

2-2:用分治法解决一个规模为N的问题。下列哪种方法是最慢的?

A.每步将问题分成规模均为N/3的2个子问题,且治的步骤耗时O(N)
解析:T(N) = 2(N / 3) + N
可得:a = 2, b = 3, d = 1
log(3, 2) < 1 ==> 时间复杂度为O(N)

B.每步将问题分成规模均为N/3的2个子问题,且治的步骤耗时O(NlogN)
解析:T(N) = 2(N / 3) + N
可得:a = 2, b = 3, d = 1
log(3, 2) < 1 ==> 时间复杂度为O(NlogN)

C.每步将问题分成规模均为N/2的3个子问题,且治的步骤耗时O(N)
解析:T(N) = 3(N / 2) + N
可得:a = 3, b = 2, d = 1
log(2, 3) > 1 ==> 时间复杂度为O(Nlog(2,3))

D.每步将问题分成规模均为N/3的3个子问题,且治的步骤耗时O(NlogN)
解析:T(N) = 3(N / 3) + N
可得:a = 3, b = 3, d = 1
log(3, 3) == 1 ==> 时间复杂度为O(NlogN)

2-3:给定程序时间复杂度的递推公式:T(1)=1,T(N)=2T(N/2)+ N。则对该程序时间复杂度最接近的描述是:

解析:T(N) = 2(N / 2) + N
可得:a = 2, b = 2, d = 1
log(2, 2) == 1 ==> 时间复杂度为O(NlogN)

A. O(logN)
B. O(N)
C. O(NlogN)

D. O(N2)

2-4:用分治法解决一个规模为N的问题时,若每步将问题划分为4个规模为N/2的子问题,并且用O(N^2logN)的时间执行治。则下列哪项最接近于整体时间复杂度?

解析:T(N) = 4(N / 2) + N2
可得:a = 4, b = 2, d = 2
log(2, 4) == 2 ==> 时间复杂度为O(N2) * logN * logN == O(N2 log2N)

A. O(N2logN)
B. O(N2)
C. O(N3logN)
D. O(N2log2N)

你可能感兴趣的:(#,算法入门,算法)