Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大O分析-While循环_Java_Binary Search Tree - Fatal编程技术网

Java 大O分析-While循环

Java 大O分析-While循环,java,binary-search-tree,Java,Binary Search Tree,我得到一个编程问题,给定一个数组,确定它是否是二叉树的后序遍历。我的解决办法如下: public static boolean isPostOrder(int[] array) { int root = array[array.length - 1]; int i = 0; while(array[i] < root) { i++; } while(array[i] > root) { i++;

我得到一个编程问题,给定一个数组,确定它是否是二叉树的后序遍历。我的解决办法如下:

public static boolean isPostOrder(int[] array) {

    int root = array[array.length - 1];

    int i = 0;

    while(array[i] < root) {
        i++;
    }

    while(array[i] > root) {
        i++;
    }

    return i == array.length - 1;

}
public静态布尔isPostOrder(int[]数组){
int root=array[array.length-1];
int i=0;
while(数组[i]<根){
i++;
}
while(数组[i]>根){
i++;
}
返回i==array.length-1;
}
我正在努力理解Big O。我已经阅读了本教程:

然而,我仍然对加法和while循环感到困惑。在本例中,我假设while循环是O(1),因为我们只是将数组中的值与整数进行比较,还是我错了

现在加法也是O(1),因为我们只是把1加到某个整数1上,对吗


因此,这是O(1)解决方案还是我遗漏了什么?

算法运行时与输入大小有一个线性连接,因为您循环了输入数组的元素。这使得你的算法是O(n)。如果没有任何循环,那么应该是O(1)=恒定访问时间

Big-O表示法背后的基本思想是估计算法执行的基本操作的数量,以及输入的大小如何影响它


这里,您的基本操作是递增i(
++i
)。迭代一个大小为N的数组,在最坏的情况下,遍历所有数组。因此,该算法具有O(N)复杂度。

O(1)是恒定的访问时间。你是在迭代,不是吗?你给出的标准while循环被认为是O(n)。加法为O(1)。如果你再做一次,那就是O(1)。如果你做某事
n次,那就是O(n)。啊,好的。我也意识到我对这个问题的解决方案也不正确。谢谢