I am learning Java now a days.
I want to be a successful enterprise
developer. Then what algorithms and
data structures I should be well
versed with? What books would you
recommend me?
To be a successful Java developer, do
I need to know all the advanced
algorithms such as those given in
CLRS?
Can you suggest me a list of the
topics that I should learn in the
descending order of their priority?
Tell me the name of some topics that I
must know. Like Searching, Sorting,
Graphs, Trees etc?
È positivo che tu sia desideroso di estendere e migliorare le tue capacità di programmazione. Tuttavia, è importante non trattare gli algoritmi come un catalogo di cose da memorizzare. Quello che devi sapere per diventare un buon sviluppatore (in Java o qualsiasi altra cosa) è comprendere l'analisi algoritmica.
Si impara imparando alcune strutture e algoritmi di dati, e che imparano ad analizzare le loro prestazioni in termini di tempo e spazio (memoria). Ricerca, ordinamento, grafici, alberi, cumuli, pile e tutte quelle cose buone. Ciò dovrebbe anche seguire alcune nozioni di base della teoria del calcolo e della matematica discreta (anche se nel regno di Java non usiamo mai direttamente questi due argomenti - i loro benefici sono indiretti.)
Separare l'apprendimento di un linguaggio di programmazione (nel tuo caso Java) con l'apprendimento di
analisi algoritmica (che è diversa dalla "memorizzazione" di algoritmi e strutture dati).
George T. Heineman, Gary Pollice e Stanley Selkow "Algorithms in a Nutshell" è un buon inizio. "Algoritmi" di Sanjoy Dasgupta, Christos Papadimitriou e Umesh Vazirani è un altro buon libro di testo per studenti.
Il miglior pensiero è quello di prendere 9-12 corsi di credito in programmazione prima di prendere un corso di laurea di 3000 livelli in algoritmi. Salvo che, l'autoapprendimento con i due libri che ho citato potrebbe essere una buona alternativa (l'autoapprendimento potrebbe non essere per tutti, però.)
Buona fortuna!