时间复杂度频率表实例

例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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值