你如何解决函数的最坏情况时间复杂性

时间:2014-01-14 21:13:50

标签: algorithm data-structures big-o time-complexity

因此,如果我们有这样的问题我们如何解决这个问题:

以下方法的最坏情况时间复杂度是多少?      (其中n是array.length):

boolean search(int[] array, int value) {
  for (int j = 0; j < array.length; i++)
    if (array[j] == value)
      return true;
  return false;
}
  • O(1)
  • O(log2 n)
  • O(n)的
  • 为O(n ^ 2)
  • 为O(n +值)

3 个答案:

答案 0 :(得分:6)

在这种情况下,您可以查看代码的结构和原因如下:

我可以看到for (int j = 0; j < array.length; j++)表示j接受从0array.length - 1的值。这意味着这是一个关于数组长度的线性循环。循环内部和下方的操作在恒定时间内发生。

现在的问题是:最坏的情况是什么?最糟糕的情况是根本没有在数组中找到该元素,这意味着您将遍历整个数组。因此,在最坏的情况下,算法为O(n)

答案 1 :(得分:1)

最糟糕的情况是,您要查找的值的索引位于数组的末尾

因此,在这种情况下,它将是O(arraylength-1),因为索引的位置取决于搜索时间。或O(n)。 如果你能找到它

http://en.wikipedia.org/wiki/Time_complexity#Table_of_common_time_complexities

答案 2 :(得分:0)

在最坏的情况下,array不包含value,总运行时间将为O(n)。