Algorithmische Effizienz ist ein Maß dafür, wie gut ein Algorithmus seine Aufgabe im Verhältnis zur Ressourcennutzung erfüllt. Ein effizienter Algorithmus erledigt ein Maximum an Arbeit mit einem Minimum an Ressourcen wie Zeit, Speicher, Arbeitsspeicher oder Energie. Algorithmische Effizienz kann anhand der Zeit- und Raumkomplexität gemessen werden. In der Informatik wird der Begriff eines effizienten Algorithmus oft mit dem „besten“ oder „optimalen“ Algorithmus verglichen.
Die Zeitkomplexität ist ein Maß dafür, wie lange ein Algorithmus im Verhältnis zur Größe seiner Eingabe benötigt, um seine Aufgabe zu erledigen. Ein Algorithmus mit der Zeitkomplexität O(n) benötigt eine lineare Zeit zur Ausführung, wobei n die Größe der Eingabe ist. Ein Algorithmus mit der Zeitkomplexität O(n^2) benötigt eine quadratische Zeit zur Berechnung.
Die Speicherkomplexität ist ein Maß für die Speichermenge, die ein Algorithmus verbraucht. Speicherkriterien für die Speicherkomplexität sind die Gesamtspeicherkomplexität (der gesamte Speicher, der am Ende des Algorithmuslaufs verwendet wird), die Arbeitsspeicherkomplexität (der maximal in einem bestimmten Zeitraum des Algorithmuslaufs verwendete Speicher) und die Hilfsspeicherkomplexität (vom Algorithmus für seine fehlerhafte Funktionsweise benötigter Speicher). Ähnlich wie die Zeitkomplexität wird auch die Speicherkomplexität in der O-Notation ausgedrückt.
Die effizientesten Algorithmen sind diejenigen, die den für jede Aufgabe zugewiesenen Speicherplatz und die zugewiesene Zeit optimal nutzen. Dies bedeutet, dass ein Algorithmus mit geringer Zeit- und Speicherplatzkomplexität bei einer bestimmten Aufgabe einen Algorithmus mit hoher Zeit- und Speicherplatzkomplexität übertrifft. Die algorithmische Effizienz ist ein wichtiger Faktor bei der Bewertung der Leistung eines Programms oder einer Anwendung.