复杂度
- 程序执行时需要的计算量(CPU)和内存空间(和代码是否简洁无关)
- 不考虑网络的耗时,不考虑计算机读取硬盘的耗时
- 复杂度是数量级,不是具体的数字,用O(...)表示,内部是一个函数表达式
- 一般针对是一个具体的算法,而非一个完整的系统
在前端中,重时间轻空间
上图是一个复杂度表,横轴代表输入的量,竖轴代表数量级结果
时间复杂度——程序执行时需要的计算量(CPU)
空间复杂度——程序执行时需要的内存空间
数量级
- O(1) ——代码就是平铺直叙的执行,没有任何循环。
-
O(logn)——数据量的对数,有循环,但是其中使用了二分例如二分查找算法;二分法是非常重要的算法思维,可以极大减少复杂度,而且计算量越大,减少的越明显。
-
O(n)——和传输的数据量一样,普通的循环
-
O(n*logn)——数据量*数据量的对数(循环+二分),例如快速排序算法
-
O(n^2)——数据量的平方,嵌套循环,例如冒泡排序