• Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

Како Да Пресметам Комплексност На Кодов?

ufs

Intern
5 ноември 2011
17
0
Код:
/* Da se izvrsi ciklicno pomestuvanje na bukvite vo nekoj zbor vnesen preku tastatura za n (ovoj broj e vnesen preku tastatura) mesta nalevo ili nadesno (ovoj izbor se vnesuva preku tastatura).! */
 
#include <stdio.h>
#include <stdlib.h>
 
 
int dolzina(char string[]);
int main(int argc, char *argv[])
{
 
int n,k,a;
int i=0,t=0;
int temp=0;
char LD;
char zbor[1000];
 
 
 
printf("Vnesete go zborot:");
scanf("%s", &zbor);
k=dolzina(zbor);
printf("\nVnesete za kolku mesta da se pomestat bukvite vo zborot %s:\n",zbor);
scanf("%d",&n);
printf("Dali sakate da pomestuvate kon levo (L) ili kon desno (D):\n");
scanf("%s",&LD);
 
 
switch(LD)
{
 
case 'D':
{
    for (t=0;t<n;t++)
    {
        temp = zbor[k-1];
        for (i=k-1;i>=0;i--)
        {
            zbor[i] = zbor[i-1];
        }
        zbor[0] = temp;
    }
    printf("Noviot zbor e: %s\n",zbor);
    break;
}
 
 
case 'L':
{
    for (t=0; t<n;t++)
    {   
        temp = zbor[0];
        for (i=0; i<k-1; i++)
        {
            zbor[i] = zbor[i+1];       
        }
        zbor[k-1] = temp;
    }
    printf("Noviot zbor e: %s\n",zbor);
    break;
}
   
   
default:
    printf("Izborot mora da se napravi pomegju levo (L) i desno (D)!\n");
}
 
 
 
system("PAUSE");
return 0;
}
   
   
int dolzina(char zbor[])
{
    int d=0;
    int i=0;
    while(zbor[i]!='\0')
    {
        i++;
        d++;
    }
    return d;
}
 

DekoRoker

Gaining Experience
12 септември 2009
625
53
Скопје
dejan.at.mk
Кoмплексноста на кодот ти е од први ред O(n) = n+16, односно линеарна комплексност, не земајќи ја комплексноста на switch. Ако ти треба комплексност при најлошо време на извршување тогаш ќе земеш предвид најлошата комплексност од секој елемент од switch. За D и L отприлика се исти, околу n^2 + 2n + 2 па на крај ќе ти биде n^2 + 3n + 18, односно ќе имаш експоненцијална комплексност
 
  • Ми се допаѓа
Реакции: ufs

Нови мислења

Последни Теми

Статистика

Теми
44,156
Мислења
879,150
Членови
30,784
Најнов член
edwardleo
На врв Дно