案件复杂,优秀,平均和差

时间:2013-02-11 14:34:38

标签: java algorithm complexity-theory

我在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;
}

2 个答案:

答案 0 :(得分:2)

你没有说出你的意见。所以假设它完全是随机的。因此,对于任何2个邻居对,我们有50%的机会订购它们。这意味着我们有1步的概率1,2步为0.5,3步为0.25,k步为2 ^( - k)。让我们计算预期的步数:

enter image description here

我不知道如何计算这个系列的总和所以我使用了wolfram alpha并获得answer: 2,所以它是一个常数。

据我所知,随机输入的平均情况是O(1)。

我不确定这是计算平均复杂度的正确方法,但对我来说似乎很好。

答案 1 :(得分:0)

复杂性通常在最坏的情况下引用,在您的情况下是O(n)。