public SomeObject secondFunction(SomeObject obj) {
SomeObject retVal = new SomeObject
for data in this.dataCollection {
for data2 in obj.dataCollection {
if(someCondition) {
retVal.add(data)
}
}
}
return retVal
}
我正在尝试学习算法分析。什么是大Θ分析 这个功能的实现?为什么/怎么样?
我不认为这是一个n平方算法,因为循环的两个结构可能有不同的大小。直觉上,我想把它称为n * m算法,因为obj,dataCollection和this.dataCollection中的元素数量都是未知数。但我以前从未见过这种语法,所以这可能是错的。它是什么?
另外,关于最佳案例,最坏情况和平均案例,我们能说什么呢?似乎最好和最坏的情况是相同的,因为它每次都会遍历两个结构中的所有元素。这是正确的还是错的?此外,这对一般案件意味着什么?在这个特定的例子中,平均情况是否与最佳和最坏情况相同?
答案 0 :(得分:1)
你的直觉是正确的 - 将它称为Θ(n * m)实现是有效的,假设内循环的主体需要恒定的时间(并且执行实际迭代的时间是无关紧要的)。
至于最佳/更差/平均情况:再次,假设内环的身体需要恒定的时间,那么在一个常数因子内,它们都将是相同的。