Jede Antwort, die derzeit auf diese Frage antwortet, besagt, dass dies O(1)eine konstante Zeit bedeutet (was auch immer mit der Messung geschieht; Laufzeit, Anzahl der Vorgänge usw.). Dies ist nicht korrekt.
Zu sagen, dass Laufzeit O(1)bedeutet, dass es eine Konstante gibt c, bei der die Laufzeit cunabhängig von der Eingabe oben begrenzt ist . Die Rückgabe des ersten Elements eines Arrays von nGanzzahlen lautet beispielsweise O(1):
int firstElement(int *a, int n) {
return a[0];
}
Aber diese Funktion ist O(1)auch:
int identity(int i) {
if(i == 0) {
sleep(60 * 60 * 24 * 365);
}
return i;
}
Die Laufzeit ist hier oben auf 1 Jahr begrenzt, aber die meiste Zeit liegt die Laufzeit in der Größenordnung von Nanosekunden.
Zu sagen, dass Laufzeit O(n)bedeutet, dass es eine Konstante gibt c, bei der die Laufzeit oben durch begrenzt ist c * n, wobei ndie Größe der Eingabe gemessen wird. Das Ermitteln der Anzahl der Vorkommen einer bestimmten Ganzzahl in einem unsortierten Array von nGanzzahlen mithilfe des folgenden Algorithmus lautet beispielsweise 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;
}
Dies liegt daran, dass wir das Array durchlaufen müssen, um jedes Element einzeln zu untersuchen.