我最终会给这个程序一个包含60,000张400像素图像的输入文件,因此我正在尝试了解这段代码在大量输入时的运行情况。为了易读性,我用“blah”替换了不重要的内容,并将所有ArrayList名称更改为简单的字母(nn
、mm
和kk
)。
for (Perceptron P : nn){
//blah
}
for (Perceptron P : mm) {
//blah
}
for (Perceptron P : kk){
//blah
}
for (Perceptron P : mm) {
for (int i = 0; i < nn; i++) {
//blah
}
for (int j = 0; j < kk; j++){
//blah
}
}
for (Perceptron X : nn){
for (Perceptron Y : mm){
//blah
}
}
for (Perceptron Z : kk){
for (Perceptron Y : mm){
//blah
}
}
我认为答案是O(
nn+mm+kk+mm(nn+kk)+nnmm+kkmm
)。如果我知道nn
是400,mm
是300,kk
是10,那么这就是O(246710)。但现在我卡住了。我不知道O(246710)是什么意思。我必须只针对其中一个变量计算大O吗?如果是这样,那有什么好处呢?我只是想知道它的性能如何。谢谢
O(nn+mm+kk+mm(nn+kk)+nnmm+kkmm)
是O(mmnn+mmkk+nnmm+kkmm)
,也就是O(mmkk+nnmm)
。所以,这告诉你的是mm
是最重要的因素 - 它会乘以两个参数。而kk
和nn
则相对不那么重要,它们只会各自乘以它们的因子。 - Boris the Spider