[新人求教]时间复杂度和空间复杂度的概念以及计算

niehuawen 2012-08-21 05:05:10
那为大虾帮忙通俗易懂的解释一下时间复杂度和空间复杂度,最好详细一点,谢过了!!
...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
niehuawen 2012-08-27
  • 打赏
  • 举报
回复
谢谢各位的解答!
baichi4141 2012-08-23
  • 打赏
  • 举报
回复
简单地说,以数据规模为变量
嵌套循环中,最内层的命令循环次数和数据规模之间的关系,就叫时间复杂度
申请空间时,申请空间大小和数据规模之间的关系,就叫空间复杂度

例如for(i=0;i<n;i++),因为循环次数和数据规模n成正比,所以时间复杂度就是O(n)
而如果for(i=0;i<100000000;i++),哪怕循环次数极大,甚至比你正在使用的数据规模大几万倍,因为这是一个常数,跟你输入的数据的多少没关系,它的时间复杂度也依然是O(1)
空间复杂度同理,new char[n],这是O(n)的空间复杂度,而哪怕你new char[100000000]甚至申请无限大的内存,只要和输入规模无关,就是O(1)

至于计算,简单的就是上面这样一看即知,复杂的涉及到数学中的上界下界,没办法简单说明,你必须去啃理论教材
平均效率的分析比上界下界还要复杂得多,很多算法的平均效率计算难度高到大多数程序员高等数学水平不够所以都看不懂,只能死记住那些数学家们得到的结论
AnYidan 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
时间复杂度是随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
空间复杂度是随问题规模n的增大,算法存储空间的增长率和f(n)的增长率相同。

如:
for(i=0;i<n;i++)
a[i]=a[i+1];
时间复杂度为O(n) 空间复杂度为O(1).
[/Quote]

++
tiankong_bear 2012-08-22
  • 打赏
  • 举报
回复
时间复杂度就是 要花费的时间和数据规模n的大致关系

比如
O(1)
O(n)
O(n^2) // 和 O(2n^2) 或 O(n^2 + n) 之类都是等价的
O( exp(n) )
tiankong_bear 2012-08-22
  • 打赏
  • 举报
回复
时间复杂度楼上正解
空间复杂度这么算是不行的。 因为空间复杂度相差一个常系数就相差好多。
tragedyhomeland 2012-08-22
  • 打赏
  • 举报
回复
时间复杂度是随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
空间复杂度是随问题规模n的增大,算法存储空间的增长率和f(n)的增长率相同。

如:
for(i=0;i<n;i++)
a[i]=a[i+1];
时间复杂度为O(n) 空间复杂度为O(1).

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧