【问题标题】:Algorithm time complexity.算法时间复杂度。
【发布时间】:2018-05-23 02:31:22
【问题描述】:

如果我们第一次遍历整个链表(比如单链表),那么时间复杂度会渐近 O(n)[其中 n 是第一个。存在的元素] 如果我们重复它重要的没有同样的事情。 (比如说 200)的时间,但我们仍然代表时间复杂度 O(n) 本身然后我的问题是 1.为什么我们不考虑上面的区别(因为第二个比第一个需要更多的时间来遍历)并且我们渐近地表示它。因为我们使用时间复杂度主要参数来进行算法之间的比较。

【问题讨论】:

标签: time-complexity


【解决方案1】:

假设算法 A 是“遍历列表一次”。

假设算法 B 是“遍历列表 200 次”。

它们都是线性的,即它们的时间复杂度在O(n)。为什么?如果将输入列表的大小加倍,

  • 算法 A 花费的时间是以前的两倍。
  • 算法 B 花费的时间是以前的两倍。

这就是线性时间背后的直觉。

你总是可以插入 Big-O 的正式定义来证明“遍历一个列表 200 次”在复杂性上是线性的(你知道,找到一个常数 k 使得对于所有 n > 一些 N,等等等等) .渐近复杂度只关心特定算法在其输入大小增长时的行为。所以对于算法B的渐近时间复杂度,我们不需要比较算法A和算法B。

【讨论】:

    【解决方案2】:

    O(n) 提供了函数可以花费的最大时间的上限,因此它们可能都花费不同的时间,但它们的上限保持不变。大 O 表示法根据函数的增长率来表征函数:不同的函数具有相同的增长率可以使用相同的 O 表示法来表示。

    【讨论】: