时间复杂度频率表实例

来源:互联网 发布:上海迅销网络招聘真假 编辑:程序博客网 时间:2024/06/07 07:17

例1

语句                                                执行步数        频率         总步数
int factorial(int n)                                   0             0           Theta(0){                                                      0             0           Theta(0)   if (n <= 1) return 1;                               1             1           Theta(1)   else return n * factorial(n - 1);   1 + tfactorial(n-1)             1   1 + tfactorial(n-1)}                                                      0             0           Theta(0)
factorial是计算n!的递归函数,所以
当n=1是设执行factorial时间是c, 我们可以得到:

tfactorial(n) = 1 + tfactorial(n-1) = 2 + tfactorial(n-2) = 3 + tfactorial(n-3)
...... = n - 1 + tfactorial(1)= n - 1 + c = Theta(n)

所以factorial得时间复杂度是Theta(n)

例2
_______________________________________________________________________________________语句                                            执行步数            频率       总步数_______________________________________________________________________________________bool minmax(...)                                    0                0         Theta(0){                                                   0                0         Theta(0)   if (n < 1) return false;                         1                1         Theta(1)   indexOfMin = indexOfMax = 0;                     1                1         Theta(1)   for (int i = 1; i < n; i++)                      1         Theta(n)         Theta(n)      if (a[indexOfMin] > a[i]) indexOfMin = i;     1         Theta(n)         Theta(n)      else if (a[indexOfMax] ...) indexOfMax = i;   1   Omega(0), O(n)   Omega(0), O(n)   return true;                                     1                1         Theta(1)}                                                   0                0         Theta(0)_______________________________________________________________________________________
因此, tminmax(n) = Theta(n)n >= 1


0 0
原创粉丝点击