其他分享
首页 > 其他分享> > 数据结构01-时空分析

数据结构01-时空分析

作者:互联网

1、时空分析

1、1时间复杂度分析

​ 我们一般采用大 o 表示法,大 O 复杂度表示法 , 它并不表示代码执行真正需要的时间 , 而是一种随着数据规模增长的趋势。也就是我们考虑的是执行时间的上界。

//example:
int cal(int n)
{
    int sum = 0; //执行一次
    int i = 1; //执行一次
    for (; i <= n; ++i) //执行n次
    {
        sum = sum + i;//执行n次
    }
    return sum; //执行一次
}

//总的执行时间就是 T = 3T(1) + 2T(n)
//因为我们只是估算一个增长趋势, 而常数和系数不会对增长趋势产生什么影响, 所以可以简写为 f(n) = n
//当 n 足够大的时候,整个 T 就趋向于 f(n)

则有 T(n) = O(n) , 即表示: 代码执行时间T(n)和代码执行次数f(n)成正比
如何快速估算一段代码的时间复杂度呢

1, 只关注循环执行次数最多的一段代码

2, 总的复杂度 = 复杂度量级最高的那段代码的复杂度

3, 嵌套代码的复杂度 = 嵌套内外代码复杂度的乘积

1、2常见的时间复杂度

O(1)
O(logn)
O(n)
O(nlogn)
O(n^2)
i = 1;
while (i <= n)
{
    i = i * 3;
}


计算方式:看循环终止时,关键语句执行次数

\[i = 3^x = n \]

\[x = logn \]

即 i = i *3 执行 logn 次,那么时间复杂度就是 T = O(logn)

1、3空间复杂度分析

空间复杂度全称是渐进空间复杂度, 表示算法的存储空间和数据规模之间的增长关系

常用的空间复杂度量级有O(1), O(n), O(n^2)

标签:执行,01,int,复杂度,时间,logn,时空,数据结构,代码
来源: https://www.cnblogs.com/SuHaiHome/p/16103719.html