Video: Dealing with Difficult Developers 2024
Teil der Algorithmen für Dummies Cheat Sheet
Sie wissen bereits, dass Algorithmen komplex sind. Sie müssen jedoch wissen, wie komplex ein Algorithmus ist, denn je komplexer der Algorithmus ist, desto länger dauert die Ausführung. Die folgende Tabelle hilft Ihnen, die verschiedenen Komplexitätsebenen in der Reihenfolge der Laufzeit (von schnell bis langsam) zu verstehen.
Komplexität | Beschreibung |
Konstante Komplexität O (1) | Liefert eine unveränderliche Ausführungszeit, unabhängig davon, wie viel Eingabe Sie eingeben. Jede Eingabe erfordert eine einzige Ausführungszeit. |
Logarithmische Komplexität O (log n) | Die Anzahl der Operationen wächst langsamer als die Eingabe, wodurch der Algorithmus bei kleinen Eingaben weniger effizient und bei größeren effizienter wird. Ein typischer Algorithmus dieser Klasse ist die binäre Suche. |
Lineare Komplexität O (n) | Operationen wachsen mit der Eingabe in einem 1: 1-Verhältnis. Ein typischer Algorithmus ist die Iteration, wenn Sie die Eingabe einmal scannen und eine Operation auf jedes Element anwenden. |
Linearithmische Komplexität O (n log n) | Komplexität ist eine Mischung aus logarithmischer und linearer Komplexität. Es ist typisch für einige intelligente Algorithmen, die zur Bestellung von Daten verwendet werden, wie zum Beispiel Mergesortsort, Heapsort und Quicksort. |
Quadratische Komplexität O (n 2 ) | Die Operationen wachsen als Quadrat der Anzahl der Eingänge. Wenn Sie eine Iteration in einer anderen Iteration haben (in der Informatik als verschachtelte Iterationen bezeichnet), haben Sie eine quadratische Komplexität. Zum Beispiel haben Sie eine Liste von Namen und, um die ähnlichsten zu finden, vergleichen Sie jeden Namen mit allen anderen Namen. Einige weniger effiziente Ordnungsalgorithmen weisen eine solche Komplexität auf: Blasensortierung, Auswahlsortierung und Einfügungssortierung. Diese Komplexität bedeutet, dass Ihre Algorithmen über Stunden oder sogar Tage laufen können, bevor Sie eine Lösung erreichen. |
Kubische Komplexität O (n 3 ) | Operationen wachsen sogar schneller als quadratische Komplexität, da Sie jetzt mehrere verschachtelte Iterationen haben. Wenn ein Algorithmus diese Reihenfolge der Komplexität hat und Sie eine bescheidene Menge an Daten verarbeiten müssen (100 000 Elemente), kann Ihr Algorithmus über Jahre laufen. Wenn Sie eine Anzahl von Operationen haben, bei denen es sich um eine Potenz der Eingabe handelt, ist es üblich, den Algorithmus als in Polynomialzeit ausgeführt zu betrachten. |
Exponentielle Komplexität O (2 n ) | Der Algorithmus nimmt die doppelte Anzahl der vorherigen Operationen für jedes hinzugefügte neue Element ein. Wenn ein Algorithmus diese Komplexität hat, können selbst kleine Probleme ewig dauern. Viele Algorithmen, die erschöpfende Suchen durchführen, haben eine exponentielle Komplexität. Das klassische Beispiel für diese Komplexität ist jedoch die Berechnung von Fibonacci-Zahlen. |
Faktorkomplexität O (n!) | Dieser Algorithmus stellt aufgrund der großen Anzahl möglicher Kombinationen zwischen den Elementen einen wahren Alptraum der Komplexität dar. Stellen Sie sich vor: Wenn Ihre Eingabe 100 Objekte ist und eine Operation auf Ihrem Computer 10 -6 Sekunden dauert (eine vernünftige Geschwindigkeit für jeden Computer heutzutage), benötigen Sie ungefähr 10 140 Jahre um die Aufgabe erfolgreich abzuschließen (eine unmögliche Zeitspanne, da das Alter des Universums auf 10 999 14 3999 Jahre geschätzt wird). Ein berühmtes Problem der komplexen Faktoren ist das Problem der Handelsvertreter, bei dem ein Verkäufer die kürzeste Route für den Besuch vieler Städte finden muss und in die Startstadt zurückkehren muss.
|