曾经学的那些表示时间复杂度的公式怎么来的?

本文详细介绍了算法的时间复杂度分析,包括常数阶、线性阶、平方阶、立方阶和对数阶。通过具体的代码示例,展示了不同阶算法的执行次数,并解释了大O表示法在计算时间复杂度中的应用。强调了时间复杂度对于算法效率的重要性,以及其从小到大的排序规律。
摘要由CSDN通过智能技术生成
1. 常数阶
O(1)
Temp=i;
i=j;
j=temp;
以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
2. 线性阶
a=0  ①
b=1  ②
for(i=1;i<n;i++)  ③
{
    s=a+b;  ④
    b=a;  ⑤
    a=s;  ⑥
}
语句1的频度:1
语句2的频度:1
语句3的频度:n
语句4的频度:n-1
语句5的频度:n-1
语句6的频度:n-1
T(n)=O(f(n))=1+1+n+3(n-1)=4n-1=O(n)
3. 平方阶
# 交换i和j
sum=0;  # 1
for(i=1;i<=n;i++)  # n
{
    for(j=1,j<=n,j++)  # n^2
    {
        sum++;  # n^2
    }
}
T(n)=1+n+n^2+n^2=2n^2+n+1=O(n^2)   # 去掉常数,低阶,高阶的系数
4. 立方阶
for(i=0;i<n;i++)
{
    for(j=0;j<i;j++)
    {
        for(k=0;k<j;k++)
        {
            x=x+2;
        }       
    }
}
i,j,k 最大值均可以取到n-1,所以n-1的三次方为最大执行次数。所以时间复杂度为O(n^3)。
5. 对数阶
i=1;
while(i<=n)
    i=i*2;
假设i=n时刚好结束循环
第1次:i=1*2=2
第2次:i=2*2=2^2
   3: i=4*2=2^3
   4: i=8*2=2^4
  ...
   x: i=n=2^x
x=log2n
f(n)=log2n
T(n)=O(log2n)

在计算时间复杂度时,我们一般使用的大O表示法,其时间复杂度,从小到大的排序是:
(1) < (logn)< (n)< (nlogn)< (n^2)<...< (2^n)< (n!)

大O符号是用于描述算法性能和复杂度的数记号,它帮助我们评估算法执行时间的增长趋势。在《算法导论》中,大O符号用来表示最坏情况下的时间复杂度,即随着输入规模n的增加,算法执行时间的增长上限。例如,如果一个算法时间复杂度为O(n),那么算法的运行时间将与输入规模n成线性关系增长;若为O(n^2),则算法的运行时间将与输入规模的平方成正比增长。 参考资源链接:[《算法导论》第三版英文PDF](https://wenku.csdn.net/doc/657ju21v9s) 为了深入理解大O符号表示时间复杂度,我们可以从简单的排序算法入手。例如,冒泡排序的时间复杂度为O(n^2),这意味着在最坏情况下,算法需要进行大约n^2/2次比较和交换操作。具体来说,如果有n个元素,那么第1轮需要比较n-1次,第2轮需要比较n-2次,以此类推,总比较次数大约是(1+2+...+(n-1)),根据等差数列求和公式,这个和等于n(n-1)/2,即O(n^2)。 通过习《算法导论》第三版,你可以更系统地掌握大O符号以及其他相关的数工具,比如大Ω(Omega)和θ(Theta)符号,以及如何使用这些工具来分析不同算法的性能。阅读时,建议重点关注书中的章节,比如第2章“算法分析”,它详细解释了这些概念,并通过例题展示了如何应用它们。此外,每个算法章节后面的习题也是巩固理论知识的好方法。 了解和分析算法时间复杂度是设计高效程序的关键。因此,除了阅读《算法导论》,我还推荐你将所知识应用于实践,例如在项目中尝试不同算法,并实际测量它们的运行时间。这样,你可以更直观地理解大O符号代表的时间复杂度算法性能的实际影响。 参考资源链接:[《算法导论》第三版英文PDF](https://wenku.csdn.net/doc/657ju21v9s)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一言

让我看看你的头像

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值