数据规模的概念
如果想要在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)。
所以,需要注意下递归调用函数的空间复杂度。

本文探讨了不同算法在处理大规模数据时的效率和资源消耗,分析了O(n^2)、O(n)、O(nlogn)等算法的时间复杂度,并对比了C++和Python在处理1亿条数据时的速度差异。同时,文章还讨论了空间复杂度,包括使用辅助数组、递归调用等操作对内存的影响。

被折叠的 条评论
为什么被折叠?



