Java 最坏情况下运行时间大O

Java 最坏情况下运行时间大O,java,big-o,complexity-theory,Java,Big O,Complexity Theory,你能解释一下我如何得到这个算法的最坏情况下的大O吗。我在读我的课本,我遇到了一个类似的算法,像这样的一个,但仍然不明白背后的逻辑 int t=0; for(int x=0;x<num.length;x++){ for(int y=0;y<num.length;y++){ for(int p=0;p<num.length;p++){ for(int w=0;w<num.length;w++){

你能解释一下我如何得到这个算法的最坏情况下的大O吗。我在读我的课本,我遇到了一个类似的算法,像这样的一个,但仍然不明白背后的逻辑

int t=0;
for(int x=0;x<num.length;x++){
    for(int y=0;y<num.length;y++){
        for(int p=0;p<num.length;p++){
            for(int w=0;w<num.length;w++){
                if(num[p][w]>num[x][y])
                {
                    t=num[x][y];
                    num[x][y]=num[p][w];
                    num[p][w]=t;
                }
            }
        }
    }
} 
int t=0;

对于(int x=0;x来说,逻辑非常简单。让我们从最内部的循环开始:

这个循环运行
num.length
次。假设
n=num.length
,它在big-O表示法中最糟糕的运行时复杂性是
O(n)

for(int w=0;w<num.length;w++){
    ...
}

for(int w=0;w逻辑非常简单。让我们从最内部的循环开始:

这个循环运行
num.length
次。假设
n=num.length
,它在big-O表示法中最糟糕的运行时复杂性是
O(n)

for(int w=0;w<num.length;w++){
    ...
}

for(int w=0;w如果将;==或的元素与大小为n的列表或数组进行比较,则其最坏情况为O(n)

因此,一个for循环的代价是:O(n),但在最坏的情况下,每个for循环有4个O(n)


总成本为:n*n*n*n=最坏情况O(n^4)。

如果将;==或<或>的元素与大小为n的列表或数组进行比较,则其最坏情况为O(n)

因此,一个for循环的代价是:O(n),但在最坏的情况下,每个for循环有4个O(n)


总成本为:n*n*n*n=最坏情况O(n^4)。

如果我有一个程序,而不仅仅是一个特定的算法,它在特定情况下“做了一些事情”,那该怎么办呢?假设我有一个操作(执行)不同任务的程序;例如,假设我有一个在矩阵(2d数组)中生成随机数的程序然后按升序对它们进行排序。用户被要求输入任何数字,这将使程序打印出一条消息,指定所选数字是否在数组中。我必须单独评估每个语句吗?使用不同的算法及其相应的大O符号如何得出最坏的结论-每种算法不同时的案例运行时间(大O)。如程序有算法时:O(n^2),O(1),O(n)…哪一个代表整个程序?@Plrr当您有多个大O时。那么这表示:最佳情况、平均情况和最坏情况。在编程中,我们的目标是平均情况。但是,取决于您的数据输入。您可能会得到最佳情况甚至最坏情况场景。在所有情况下,“发生最多”的都是平均情况。你经常处理这个问题。@Plrr你的意思是一个程序由多个独立的算法组成,具有不同的最坏情况复杂性吗?如果是这种情况,那么最坏的就是你选择的一个。例如,对于
O(n^2),O(1),O(n)
,总体最坏情况是
O(n^2)
因为在最坏的情况下,有一个二次增长。@mostrush Ohhh现在我明白了!谢谢!如果我有一个程序,而不仅仅是一个特定的算法在特定的情况下做“某些事情”,那该怎么办呢?假设我有一个操作(执行)的程序不同的任务;例如,假设我有一个在矩阵(2d数组)中生成随机数的程序然后按升序对它们进行排序。用户被要求输入任何数字,这将使程序打印出一条消息,指定所选数字是否在数组中。我必须单独评估每个语句吗?使用不同的算法及其相应的大O符号如何得出最坏的结论-每种算法不同时的案例运行时间(大O)。如程序有算法时:O(n^2),O(1),O(n)…哪一个代表整个程序?@Plrr当您有多个大O时。那么这表示:最佳情况、平均情况和最坏情况。在编程中,我们的目标是平均情况。但是,取决于您的数据输入。您可能会得到最佳情况甚至最坏情况场景。在所有情况下,“发生最多”的都是平均情况。你经常处理这个问题。@Plrr你的意思是一个程序由多个独立的算法组成,具有不同的最坏情况复杂性吗?如果是这种情况,那么最坏的就是你选择的一个。例如,对于
O(n^2),O(1),O(n)
,总体最坏情况是
O(n^2)
因为在最坏的情况下,有一个二次增长。@mostruash Ohhh现在我明白了!谢谢!