【问题标题】:What is meant by constant time? [duplicate]恒定时间是什么意思? [复制]
【发布时间】:2014-01-26 03:22:12
【问题描述】:

我正在研究算法,但我不了解恒定时间算法。

这意味着什么以及与线性时间算法有何不同。

谢谢,

【问题讨论】:

  • 时间成本不会随着输入数据大小的增加而增加。

标签: algorithm time-complexity


【解决方案1】:

恒定时间只是意味着无论函数输入的大小如何,成本始终保持不变。

这是一个简单的例子,假设你有一个名为deleteHead的函数,当给定链表中的一个节点时,它会返回下一个:

function deleteHead(list) {
   if(list == null)
      return null;
   return list.next;
}

不管你给这个函数的列表有多大(十个或十亿个),它总是只做一件事情,使它成为一个常数时间算法 O(1)。

相比之下,线性算法必须检查链表的所有 N 个元素以执行一些计算,这意味着处理更大的列表需要更多时间。传统上,如果您不维护结束指针,则将元素添加到链表的末尾是线性时间。

【讨论】:

    【解决方案2】:

    这可以在大多数基础计算机科学书籍中找到。

    它只是描述了一个输入长度之间的依赖关系 算法或对象的大小(取决于应用程序)和 一次手术所花费的时间。例如。使用列表需要固定数量的步骤来添加 前/后的对象,无论列表有多大。

    在列表中查找特定项目需要线性时间(在最坏和平均的情况下)- 如果列表的长度是原来的两倍,则必须查看两倍的项目才能找到要查找的项目

    【讨论】:

      【解决方案3】:

      对于恒定时间算法,执行时间与输入的大小无关。对于线性时间,执行时间随输入大小线性增加。

      【讨论】:

        【解决方案4】:

        当更改恒定时间算法的输入大小时,运行时不会增长。

        例如线性算法,当改变输入大小时,运行时间(线性)增长。

        对于更糟糕的运行时间,比如指数,运行时间在改变输入大小时呈指数增长。

        例如,见Wikipedia: Time complexity

        【讨论】:

          猜你喜欢
          • 2011-05-18
          • 1970-01-01
          • 2019-09-12
          • 2015-01-22
          • 2017-10-25
          • 2020-10-27
          • 2015-07-15
          • 2018-07-17
          • 2012-08-13
          相关资源
          最近更新 更多