我在java中创建了这个方法,指示整数数组是否已排序。它的复杂性是什么?我认为如果在最坏的情况下O(1)是好的是平均情况下是O(n)吗?
static boolean order(int[] a){
for(int i=0;i<a.length-1;i++){
if(a[i]>a[i+1]) return false;
}
return true;
}
答案 0 :(得分:2)
你没有说出你的意见。所以假设它完全是随机的。因此,对于任何2个邻居对,我们有50%的机会订购它们。这意味着我们有1步的概率1,2步为0.5,3步为0.25,k步为2 ^( - k)。让我们计算预期的步数:
我不知道如何计算这个系列的总和所以我使用了wolfram alpha并获得answer: 2,所以它是一个常数。
据我所知,随机输入的平均情况是O(1)。
我不确定这是计算平均复杂度的正确方法,但对我来说似乎很好。
答案 1 :(得分:0)
复杂性通常在最坏的情况下引用,在您的情况下是O(n)。