这个函数的BigΘ分析是什么?

时间:2015-04-13 17:56:39

标签: algorithm big-o big-theta

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中的元素数量都是未知数。但我以前从未见过这种语法,所以这可能是错的。它是什么?

另外,关于最佳案例,最坏情况和平均案例,我们能说什么呢?似乎最好和最坏的情况是相同的,因为它每次都会遍历两个结构中的所有元素。这是正确的还是错的?此外,这对一般案件意味着什么?在这个特定的例子中,平均情况是否与最佳和最坏情况相同?

1 个答案:

答案 0 :(得分:1)

你的直觉是正确的 - 将它称为Θ(n * m)实现是有效的,假设内循环的主体需要恒定的时间(并且执行实际迭代的时间是无关紧要的)。

至于最佳/更差/平均情况:再次,假设内环的身体需要恒定的时间,那么在一个常数因子内,它们都将是相同的。