复杂性秩序

时间:2014-04-16 19:15:42

标签: complexity-theory

我需要一些帮助才能找到这个功能的复杂性顺序:

int cerca_ciclos (int vet[],int nivel)
{
    int i,j,cont=0;
    if (vet[nivel-2] == vet[nivel-1]) {
            return 1; 
    }

    for (i=2;i <= nivel/2; i++)
    {
        for (j=0;j<i;j++)
        {
           if  (vet[nivel-j-1] == vet[nivel-1-i]){
                cont++;
                }
        }
        if (cont == i){

                return 1;
        }
    }
    return 0;
}

变量Nivel永远不会超出我设定的pré定义的限制35。

2 个答案:

答案 0 :(得分:0)

该算法以时间复杂度O(nivel²)

运行

外部for - 循环从0nivel/2,内部从0i,在0之间和nivel/2。所以要计算的步数是

total = 1 + 2 + 3 + 4 + 5 + ... + nivel/2

Gauß'说这有点像1/2⋅(nivel/2)⋅(nivel/2+1),所以它在nivel中是二次的。

但由于nivel是35(或任何其他常数),因此复杂度为O(1),因为您可以找到一个大于“最坏情况”数的常数值算法必须计算的步骤。

答案 1 :(得分:0)

您可以使用Sigma表示法执行以下操作:

enter image description here