【发布时间】:2021-12-28 18:51:16
【问题描述】:
我正在通过互联网学习数据结构和算法,我学到了;
- 时间复杂度是算法运行所花费的时间,作为输入长度的函数
- 大 O 表示法是计算时间复杂度的指标 和
- 增长率是算法成本随着其输入规模的增长而增长的速率。
假设有一个算法,其操作总数为f(n) = n^2+3n+1。
那么如果这个算法的时间复杂度和增长率是多少呢?
都是O(n^2)代表吗?
我不清楚使用大 O 表示法表示时,时间复杂度和增长率之间有什么区别。
请帮助我对条款有一个清晰的认识。将不胜感激。
提前谢谢你!
【问题讨论】:
-
我认为“增长率”是一种不太正式的方式来表达“复杂性”,通常是时间复杂性。 “时间复杂度”是指运行时间(在一些基本操作中衡量)作为输入大小的函数,有时只是输入大小的函数,近似为大 O 或大 Theta。
-
amount of time taken by an algorithm to run的定义严格来说是不正确的。增长率是一个更好的定义,与时间复杂性不符。它显示了执行时间将如何从输入大小增长/缩放。时间复杂度/增长率big O notation当然与执行时间measured in miliseconds, seconds, etc相关,但是您可以使用一种扩展性更差的算法(冒泡排序 -O(n^2))实际上执行得更快(快速排序O(n logn))元素数量(例如,4 个元素)。 -
增长率不是衍生品吗?就像 O(1) 的增长率为 0。
-
@Calculuswhiz 我不确定,因为我不熟悉
rate of growth术语。该定义可以理解为时间复杂度的导数,如果它是时间复杂度本身增长的速度。但从某些来源来看,增长率似乎被用作时间复杂度的同义词,并表示为大 O。 -
> 运行时间作为输入函数增加的速率称为增长率。span>
标签: algorithm time-complexity big-o