Wenn Sie Software-Ingenieur werden wollen, aber nicht wissen, wo Sie anfangen sollen, ersparen wir Ihnen die Spannung: Es sind Algorithmen und Datenstrukturen.
Wenn Sie diese Säulen der Programmierung einmal verstanden haben, werden Sie sie überall sehen. Und je mehr Algorithmen und Datenstrukturen Sie lernen, desto mehr werden sie als Treibstoff für Ihre Karriere als Software-Ingenieur dienen.
Zu Beginn wollen wir uns zunächst mit Suchen und Sortieren beschäftigen, zwei Klassen von Algorithmen, ohne die Sie nicht leben können. Dann wollen wir einen kurzen Überblick über den Rest der Landschaft geben, die Bäume, Graphen, dynamische Programmierung und vieles mehr umfasst.
Grob gesagt gibt es zwei Kategorien von Suchalgorithmen, die Sie sofort kennen müssen: lineare und binäre. Depth First Search (DFS) und Breadth First Search (BFS) sind ebenfalls sehr wichtig, aber die heben wir uns für den Abschnitt über Graphentraversal auf.
Lineare Suche
Die linearen und binären Algorithmen werden so genannt, um zu beschreiben, wie lange (Zeitkomplexität) eine Suche auf der Grundlage der Größe der Eingabe, die durchsucht wird, dauern wird.
Beim linearen Suchalgorithmus müsste man beispielsweise bei 100 zu durchsuchenden Elementen im schlimmsten Fall jedes Element der Eingabe durchsehen, bevor man auf den gewünschten Wert stößt. Der Algorithmus wird als linear bezeichnet, weil die für die Suche benötigte Zeit genau mit der Anzahl der Elemente in der Suche korreliert (100 Elemente/Eingabe = 100 Prüfungen/Komplexität)
Kurz gesagt, linear = einfach (der Algorithmus ist nicht clever). Ein Beispiel: Stellen Sie sich vor, Sie versuchen, Ihren Freund Lin in einer Reihe von Menschen zu finden, die in keiner bestimmten Reihenfolge stehen. Sie wissen bereits, wie Lin aussieht, also müssen Sie einfach jede Person der Reihe nach ansehen, bis Sie Lin erkennen oder nicht erkennen. Das war’s. Dabei folgst du dem linearen Suchalgorithmus
Binärsuche
Der Name Binärsuche kommt daher, dass das Wort binär „von oder in Bezug auf zwei Dinge“ bedeutet und der Algorithmus funktioniert, indem er die Eingabe in zwei Teile aufteilt, bis er das gesuchte Element findet. Die eine Hälfte enthält das gesuchte Element, die andere nicht. Der Prozess wird so lange fortgesetzt, bis die Stelle, an der die Eingabe geteilt wurde, zum gesuchten Element wird. Die binäre Suche ist im Grunde nur ein sehr disziplinierter Ansatz für den Eliminierungsprozess. Sie ist schneller als die lineare Suche, aber sie funktioniert nur bei geordneten Sequenzen.
Ein Beispiel soll dies verdeutlichen. Nehmen wir an, du versuchst, deinen Freund Bin (der 1,70 m groß ist) in einer Reihe von Menschen zu finden, die nach ihrer Größe von links nach rechts geordnet sind, vom Kleinsten zum Größten. Die Schlange ist sehr lang, und du hast keine Zeit, sie einzeln durchzugehen und die Größe aller mit der von Bin zu vergleichen. Was können Sie tun?