2-2 对数据规模有一个概念

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据规模的概念

如果想要在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)。

所以,需要注意下递归调用函数的空间复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值