我正在研究算法,但我没有得到恒定时间算法。
这意味着什么以及与线性时间算法有何不同。
谢谢,
答案 0 :(得分:6)
恒定时间仅意味着无论函数输入的大小如何,成本始终保持不变。
这是一个简单的例子,假设您有一个名为deleteHead
的函数,当给定链表中的节点时,返回下一个节点:
function deleteHead(list) {
if(list == null)
return null;
return list.next;
}
无论列表的大小如何,您都可以使用此功能(十项或十亿项),它始终只做一件事,使其成为一个恒定时间算法O(1)。
通过比较的线性算法,必须检查链接列表的所有 N个元素以执行某些计算,这意味着处理更大的列表需要更多时间。传统上,如果不维护结束指针,则将元素添加到链接列表的末尾是线性时间。
答案 1 :(得分:3)
这可以在大多数基础计算机科学书籍中找到。
它简单地描述了输入长度之间的依赖关系 算法或对象的大小(取决于应用程序)和 手术所需的时间。例如。使用列表需要一定数量的步骤来添加 无论列表有多大,前/后的对象都是。
查找列表中的特定项目需要线性时间(在最差和平均情况下) - 如果您有两倍的列表,则必须查看两倍的项目才能找到您正在查找的项目
答案 2 :(得分:2)
更改恒定时间算法的输入大小时,运行时不会增长。
例如线性算法,当改变输入大小时,运行时增长(线性)。
对于更糟糕的运行时,比如指数,运行时在改变输入大小时会呈指数级增长。
答案 3 :(得分:2)
对于恒定时间算法,执行时间与输入的大小无关。对于线性时间,执行时间随输入大小线性增加。