前言:为什么会出现时间复杂度这个概?
我们在编写代码的时候为了完成一个函数功能,可能用到不同的处理方式:顺序多次执行、使用for循环执行、使用递归调用等等。当循环次数取值范围不同时,各种算法处理所耗费的时间也不一样,不同的算法所执行的次数通过分析可以用数学函数表达。
时间复杂度概念:我们把 算法需要执行的运算次数 用 输入大小n 的函数 表示,即 T(n) 。此时为了 估算算法需要的运行时间 和 简化算法分析,我们引入时间复杂度的概念。
时间复杂度定义:存在常数 c 和函数 f(N),使得当 N >= c 时 T(N) <= f(N),表示为 T(n) = O(f(n)) 。
实际应用中带来的优势
如下图:假设现在有两个算法均可以实现一个功能,其运算次数n的函数表达分别为T(n) = n + 2与T(n) = n^2。可以这样理解,同一个功能,一个人只用了一层for循环执行N次,再多运行两次;另一个人用了for循环嵌套for完成,所以执行次数为n^2。
当 N >= 2 的时候,f(n) = n^2 总是大于 T(n) = n + 2 的,于是我们说 f(n) 的增长速度是大于或者等于 T(n) 的,也说 f