Chaque réponse répondant actuellement à cette question vous indique que le O(1)temps constant signifie (quoi qu'il arrive à la mesure; pourrait être le temps d'exécution, le nombre d'opérations, etc.). Ce n'est pas exact.
Dire que le runtime est O(1)signifie qu'il existe une constante ctelle que le runtime est délimité ci-dessus par c, indépendamment de l'entrée. Par exemple, renvoyer le premier élément d'un tableau d' nentiers est O(1):
int firstElement(int *a, int n) {
return a[0];
}
Mais cette fonction l'est O(1)aussi:
int identity(int i) {
if(i == 0) {
sleep(60 * 60 * 24 * 365);
}
return i;
}
Le temps d'exécution ici est limité au-dessus d'un an, mais la plupart du temps, le temps d'exécution est de l'ordre de la nanoseconde.
Dire que le runtime est O(n)signifie qu'il existe une constante ctelle que le runtime est délimité ci-dessus par c * n, où nmesure la taille de l'entrée. Par exemple, trouver le nombre d'occurrences d'un entier particulier dans un tableau non trié d' nentiers par l'algorithme suivant est O(n):
int count(int *a, int n, int item) {
int c = 0;
for(int i = 0; i < n; i++) {
if(a[i] == item) c++;
}
return c;
}
C'est parce que nous devons parcourir le tableau en inspectant chaque élément un par un.