数据规模的概念
如果想要在1s内解决问题:
- O(n^2)的算法可以处理大约10^4级别的数据
- O(n)的算法可以处理10^8级别的数据 10^8 = 1亿
- O(nlogn)的算法可以处理10^7级别的数据 log2^9 = 20.723
算法可能还有较大的系数,所以保险一点的话,可以将上述级别的数据量除以2,或者是10。
c++,累加1亿条数据,大约需要花费0.4s的时间。
python,累加1亿条数据,大约需要花费4s的时间
空间复杂度
- 多开一个辅助的数组:O(n)
- 多开一个辅助的二维数组:O(n^2)
- 多开常数空间:O(1)
递归调用是有空间代价的
累加,仅使用2个变量,空间复杂度为O(1)。
累加,使用递归的方式,栈中需要保存n个函数状态,空间复杂度为O(n)。
所以,需要注意下递归调用函数的空间复杂度。