PS:和段叔叔跑步的时候推归并排序的 O(nlogn),我感觉要飞升了
https://blog.csdn.net/so_geili/article/details/53444816
算法:问题的解决方案,而不是问题的答案
时间复杂度的计算,可以分为递归和非递归算法
1.时间复杂度
描述一个算法,在问题规模不断增大时,对应的时间增长曲线
2.时间复杂度大O的理解
(1)T(n):对于给定输入规模n,算法需要执行的运算次数为n的函数T(n)
(2)f(n):存在常数 c 和函数 f(n),使得当 n >= c 时 T(n) <= f(n),即T(n)的 增长率小于等于f(n),也说f(n)是T(n)的 上界
(3)T(n) = O(f(n)):用 f(n)的增长速度来度量 T(n) 的增长速度,即这个算法的时间复杂度是 O(f(n))
3.时间复杂度计算规则
(1)忽略常数项 T(n) = n + 29,时间复杂度为 O(n)
(2)忽略低次项 T(n) = n^3 + n^2 + 29,时间复杂度为 O(n^3)
(3)忽略与最高阶相乘的常数 T(n) = 3n^3,此时时间复杂度为 O(n^3)
4.递归算法时间复杂度的计算
PS:这个东西我真的很抗拒,各种放缩技巧
(1)主项定理
(2)递归树