[英]Big-O of a while loop in Java
我想知道这段代码的大O是什么
static boolean mysterious(int[] w) {
int anz = w.length;
int i = 0;
int j = anz - 1;
while (i < j) {
if (w[i] != w[j]) {
return false;
}
i++;
j--;
}
return true;
}
我会说是O(j),但我不太确定。
谢谢你的帮助!
i
和j
开始指向数组w
任一端,并且i
向前移动而j
向后移动。 在每一步,我们都比较i
和j
所指的元素。 因此,它是渐近的O(w.length)
我们在这里可以说最好/最坏的情况。 最佳情况下的性能为O(1)
,如果数组输入的第一个和最后一个元素不相等,则会发生这种情况。
在最坏的情况下, while
循环将进行N/2
次迭代。 如果数字数组不包含有关回文的中间元素的任何子数组,则会发生这种情况。 因此,在最坏的情况下,该函数为O(N)
,其中N
是数组的长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.