Welche Algorithmen und Datenstrukturen sollte ein Entwickler unbedingt kennen? [geschlossen]


24

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?


1
@ Jonsca: Affiliate-Marketing ah? ;)
Chankey Pathak

Antworten:


17

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 .


3
Sie müssen jedoch die Kosten kennen, die mit den Algorithmen verbunden sind: Diese Breitensuche findet den kürzesten Pfad, wenn Sie beispielsweise potenziell viel Speicherplatz verwenden.
Frank Shearar

Einverstanden, obwohl es schon ein langer Weg ist, den Geist der Big-O-Notation zu erlangen.
Joonas Pulakka

8

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.


0

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.


0

Ich lerne jetzt seit Tagen Java.

Ich möchte ein erfolgreicher Unternehmensentwickler sein. Mit welchen Algorithmen und Datenstrukturen sollte ich mich dann auskennen? Welche Bücher würdest du mir empfehlen?

Muss ich alle fortgeschrittenen Algorithmen wie die in CLRS angegebenen kennen, um ein erfolgreicher Java-Entwickler zu sein?

Können Sie mir eine Liste der Themen vorschlagen, die ich in absteigender Reihenfolge ihrer Priorität lernen sollte?

Sagen Sie mir den Namen einiger Themen, die ich kennen muss. Mögen Sie Suchen, Sortieren, Diagramme, Bäume usw.?

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!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.