J'apprends Java maintenant depuis quelques jours.
Je veux être un développeur d'entreprise prospère. Alors, avec quels algorithmes et structures de données dois-je bien connaître? Quels livres me recommanderiez-vous?
Pour être un développeur Java performant, dois-je connaître tous les algorithmes avancés tels que ceux fournis dans CLRS?
Pouvez-vous me suggérer une liste des sujets que je devrais apprendre dans l'ordre décroissant de leur priorité?
Dites-moi le nom de certains sujets que je dois connaître. Comme la recherche, le tri, les graphiques, les arbres, etc.?
Il est bon que vous souhaitiez étendre et améliorer vos compétences en programmation. Il est cependant important de ne pas traiter les algorithmes comme un catalogue de choses à mémoriser. Ce que vous devez savoir pour devenir un bon développeur (en Java ou ailleurs) est de comprendre l'analyse algorithmique.
Vous apprenez cela en apprenant quelques structures de données et algorithmes sélectionnés, et en apprenant à analyser leurs performances en termes de temps et d'espace (mémoire). Recherche, tri, graphiques, arbres, tas, piles et toutes ces bonnes choses. Cela devrait également suivre certaines bases de la théorie du calcul et des mathématiques discrètes (même si dans le domaine de Java, nous ne pouvons jamais utiliser ces deux sujets directement - leurs avantages sont indirects.)
Séparez l'apprentissage d'un langage de programmation (dans votre cas Java) avec l'apprentissage de l'analyse algorithmique (qui est différente de la "mémorisation" des algorithmes et des structures de données.)
George T. Heineman, Gary Pollice et Stanley Selkow "Algorithms in a Nutshell" est un bon début. "Algorithms" de Sanjoy Dasgupta, Christos Papadimitriou et Umesh Vazirani est un autre bon manuel de premier cycle.
Le mieux est de suivre des cours de 9 à 12 crédits en programmation avant de suivre un cours de premier cycle de 3000 niveaux en algorithmes. Sauf cela, l'auto-apprentissage avec les deux livres que j'ai mentionnés pourrait être une bonne alternative (l'auto-apprentissage pourrait ne pas être pour tout le monde, cependant.)
Bonne chance!