Ich möchte ein erfolgreicher Java-Entwickler für Unternehmen sein. Mit welchen Algorithmen und Datenstrukturen sollte ich gut vertraut sein? Welche Bücher würdest du mir empfehlen?
Muss ich, um ein erfolgreicher Java-Entwickler zu sein, alle fortgeschrittenen Algorithmen wie die in CLRS angegebenen kennen ?
Können Sie eine Liste der Themen vorschlagen, die ich in absteigender Reihenfolge ihrer Priorität lernen sollte?
Muss ich wissen:
- Suchen?
- Sortierung?
- Grafiken / Bäume?
etc?
java
learning
algorithms
data-structures
Chankey Pathak
quelle
quelle
Antworten:
Cormens Einführung in Algorithmen ist ein gutes Buch für einige grundlegende theoretische Grundlagen.
Die meisten Algorithmen und Datenstrukturen wurden jedoch bereits von anderen codiert, getestet und optimiert, und es gibt keinen Grund, sie erneut zu implementieren. Um ein erfolgreicher Java- Entwickler zu sein, müssen Sie das Collections Framework genau kennen .
quelle
Um Programmierer jeglicher Art zu sein, müssen Sie alle grundlegenden Datenstrukturen (Stapel, Warteschlangen, Arrays, verknüpfte Listen, Hashtabellen, Bäume usw.) im Detail kennen. Wenigstens genug, dass Sie eines davon für sich selbst implementieren könnten, wenn Sie sich in einer Welt ohne Kollektions-Frameworks befinden, die die Aufgabe für Sie übernehmen.
In Bezug auf Algorithmen scheint es mir, dass sie mehr Werkzeuge für Jobs sind, während Ihre Datenstrukturen grundlegende Bausteine sind. Ich denke nicht, dass es so wichtig ist, die Details zu kennen, wie man jeden Algorithmus implementiert, dem man begegnet. Was Sie tun müssen, um in der Lage zu sein, ist zu bewerten, wie gut ein Algorithmus für einen bestimmten Zweck funktioniert. Manchmal kann der Unterschied zwischen der Tiefensuche und der Breitensuche oder der Art der Sortierung, die Sie für Ihre Daten durchführen, einen großen Unterschied für die Leistung oder den allgemeinen Erfolg Ihres Codes bedeuten. Daher ist es sehr wichtig, zu wissen, wie man dies beurteilt.
quelle
Zusätzlich zu den anderen Antworten möchte ich hinzufügen, dass das Studium von Algorithmen nicht nur dazu dient, bekannte Techniken zu kennen (was immer noch wichtig ist), sondern auch in der Lage zu sein, den Gedankenprozess zu verstehen, der beim Entwickeln anfällt Eine Lösung für ein Problem, auf das Sie im wirklichen Leben stoßen, das nicht unbedingt bekannt ist.
quelle
Es ist gut, dass Sie bestrebt sind, Ihre Programmierkenntnisse zu erweitern und zu verbessern. Es ist jedoch wichtig, Algorithmen nicht als einen Katalog von Dingen zu betrachten, die man sich merken sollte. Was Sie wissen müssen, um ein guter Entwickler zu werden (in Java oder irgendetwas anderem), ist, die algorithmische Analyse zu verstehen.
Sie lernen , dies durch einige wenige ausgewählte Datenstrukturen und Algorithmen zu lernen, und lernen , ihre Leistung in Bezug auf Zeit und Raum (Speicher) zu analysieren. Suchen, Sortieren, Graphen, Bäume, Haufen, Stapel und all das Gute. Dies sollte auch einige Grundlagen der Rechentheorie und der diskreten Mathematik berücksichtigen (auch wenn wir im Bereich Java diese beiden Themen nie direkt anwenden können - ihre Vorteile sind indirekt).
Trennen Sie das Erlernen einer Programmiersprache (in Ihrem Fall Java) mit dem Erlernen der algorithmischen Analyse (die sich vom "Auswendiglernen" von Algorithmen und Datenstrukturen unterscheidet).
George T. Heineman, Gary Pollice und Stanley Selkows "Algorithmen in Kürze" sind ein guter Anfang. "Algorithmen" von Sanjoy Dasgupta, Christos Papadimitriou und Umesh Vazirani ist ein weiteres gutes Lehrbuch für Studenten.
Am besten ist es, 9-12 Kreditpunkte in Programmierung zu belegen, bevor Sie einen Grundkurs in Algorithmen mit 3000 Stufen belegen. Ansonsten könnte das Selbststudium mit den beiden Büchern, die ich erwähnte, eine gute Alternative sein (das Selbststudium ist jedoch möglicherweise nicht für jedermann geeignet.)
Viel Glück!
quelle