数据结构中的算法

Part2 数据结构算法效率的测量

时间复杂度

时间复杂度——评判一个算法的时间开销
事前估计算法时间开销T(n)与问题规模n的关系
时间复杂度就是研究T(n)的数量级

例如:
T(n)=3n3 + 2n2 + 1
其时间复杂度为 O(n3)

加法规则:
T(n) = T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n),g(n)))
例如:
T(n) = n3 + n2log2n = O(n3) + O(n2log2n) = O(n3)

乘法规则:
T(n) = T1(n) * T2(n) = O(f(n)) * O(g(n)) = O(f(n)*g(n))

常见的渐进的时间复杂度:
咒语:“常<对<幂<指<阶”
O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

时间复杂度的分类:
最坏时间复杂度:最坏结果的时间复杂度
平均时间复杂度:所有输入示例等概率出现的情况下,算法的期望运行时间
最好时间复杂度:最好结果下的时间复杂度

注: 多多关注代码当中循环或者循环嵌套的部分。

例题:数据结构——算法Part2 算法效率的测量 时间复杂度
解:
x = log2n + 1
T(n) = O(x) = O(log2n) + O(1) = O(log2n)

相关文章: