什么是时间复杂度O(1)次,在java中的O(n)次

时间:2015-12-07 09:30:51

标签: java algorithm big-o time-complexity

我有一个场景 - 必须读取两个迭代器,并需要将它们添加到列表并返回该列表 这是什么"该功能应该在O(1)时间内运行"。

如果我的理解是正确的, 如果数组有1个元素,处理时间需要1秒,如果它有100个元素,那么它也需要1秒......

如何在此处实现1秒算法以进行上述读取并添加到新列表操作...

2 个答案:

答案 0 :(得分:8)

<强> O(1)

  

O(1)描述了一种始终在同一时间执行的算法   (或空格),不管输入数据集的大小。 O(1)时间复杂度也称为恒定时间复杂度

独立于列表大小,始终返回第一个元素。

boolean IsFirstElementNull(List<string> elements)
{
    return elements[0] == null;
}

<强> O(N)

  

O(N)描述了一种算法,其性能将线性增长   与输入数据集的大小成正比。

boolean ContainsValue(List<string> elements, string value)
{
    foreach (var element in elements)
    {
        if (element == value) return true;
    }

    return false;
}

好来源herehere

答案 1 :(得分:5)

O(1)时间复杂度意味着无论输入的大小如何,程序运行所需的时间都是不变的。

这就是O(1)时间复杂度被称为恒定时间复杂度的原因。

您可以将此与其他时间复杂度进行比较,例如O(n)这意味着程序所花费的时间会随着输入的大小而线性增加,即n

O(exp^n)表示所用时间将呈指数级增长。