因此,如果我们有这样的问题我们如何解决这个问题:
以下方法的最坏情况时间复杂度是多少? (其中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;
}
答案 0 :(得分:6)
在这种情况下,您可以查看代码的结构和原因如下:
我可以看到for (int j = 0; j < array.length; j++)
表示j
接受从0
到array.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)。