Les deux programmes ci-dessous obtiennent n entiers à partir du fichier et calculent la somme de ath à bth entiers q (nombre de questions) fois. Je pense que le programme supérieur a une complexité de temps pire que la plus faible, mais j'ai des problèmes pour calculer la complexité temporelle de ces deux algorithmes.Complexité temporelle d'un algorithme de tri
[input sample]
5 3
5 4 3 2 1
2 3
3 4
2 4
[output sample]
7
5
9
Programme 1:
#include <stdio.h>
FILE *in=fopen("input.txt","r");
FILE *out=fopen("output.txt","w");
int n,q,a,b,sum;
int data[1000];
int main()
int i,j;
fscanf(in,"%d%d",&n,&q);
for(i=1;i<=n;i++) fscanf(in,"%d",&data[i]);
for i=0;i<q;i++)
{
fscanf(in,"%d%d",&a,&b);
sum=0;
for(j=a;j<=b;j++) sum+=data[j];
fprintf(out,"%d\n",sum);
}
return 0;
}
Programme 2:
#include <stdio.h>
FILE *in=fopen("input.txt","r");
FILE *out=fopen("output.txt","w");
int n,q,a,b;
int data[1000];
int sum[1000];
int main()
{
int i,j;
fscanf(in,"%d%d",&n,&q);
for(i=1;i<=n;i++) fscanf(in,"%d",&data[i]);
for(i=1;i<=n;i++) sum[i]=sum[i-1]+data[i];
for(i=0;i<q;i++)
{
fscanf(in,"%d%d",&a,&b);
fprintf(out,"%d\n",sum[b]-sum[a-1]);
}
return 0;
}
Les programmes ci-dessous obtient n entiers de 1 à m et les trie. Encore une fois, je ne peux pas calculer la complexité du temps.
[input sample]
5 5
2 1 3 4 5
[output sample]
1 2 3 4 5
Programme:
#include <stdio.h>
FILE *in=fopen("input.txt","r")
FILE *out=fopen("output.txt","w")
int n,m;
int data[1000];
int count[1000];
int main()
{
int i,j;
fscanf(in,"%d%d",&n,&m);
for(i=0;i<n;i++)
{
fscanf(in,"%d",&data[i]);
count[data[i]]++
}
for(i=1;i<=m;i++)
{
for(j=0;j<count[i];j++) fprintf(out,"%d ",i);
}
return 0;
}
Il est ironique (ou non) que je ne peux pas calculer la complexité temporelle de mes propres algorithmes, mais je passions à apprendre, donc s'il vous plaît gourous de programmation, aide-moi!
"ayant du mal" n'a pas de sens. Qu'est-ce qui vous trouble? Où êtes-vous arrêté? Qu'avez-vous essayé? Le code n'est pas très intéressant. Ce qui est intéressant, c'est comment vous essayez de calculer la complexité et quelle partie du calcul de complexité vous arrête. –
S.Lott, je suis désolé si j'ai été impoli d'écrire ma question. Sur le programme 1, je ne peux pas définir la complexité temporelle car la boucle j est imbriquée dans la boucle i, mais la valeur de j peut différer de l'entrée et ne pas exécuter une boucle complète. Sur le programme 2, je ne peux pas définir la complexité temporelle car il y a trois boucles et elles ne sont pas imbriquées. Ma meilleure estimation est O (n + q). Sur le dernier programme, je ne peux pas définir la complexité temporelle parce qu'il y a deux boucles qui fonctionnent différemment selon la valeur de n et m, et je ne sais pas lequel de n et m est plus grand. Si je n'ai pas encore été clair, dites-le moi s'il vous plaît! –
@ Passonate Learner: S'il vous plaît ne pas commenter sur votre propre question. Vous possédez la question. Veuillez mettre à jour la question pour la rendre complète et évidente. Veuillez corriger la question et supprimer votre commentaire. –