web-dev-qa-db-fra.com

Quels algorithmes et structures de données doivent-ils savoir absolument un développeur?

Je veux être une entreprise réussie Java Developer. Avec quels algorithmes et structures de données devrais-je être bien versé? Quels livres me recommanderiez-vous?

Pour réussir Java Developer, dois-je connaître tous les algorithmes avancés tels que ceux donnés dans [~ # ~ # ~ # ~] ?

Pouvez-vous suggérer une liste des sujets que je devrais apprendre dans l'ordre décroissant de leur priorité?

Dois-je savoir:

  • Recherche?
  • Tri?
  • Graphiques/arbres?

etc?

24
Chankey Pathak

Introduction de Cormen aux algorithmes est un bon livre pour certaines fondations théoriques de base.

Cela dit, la plupart des algorithmes et des structures de données ont été codés, testés et optimisés par d'autres déjà, et il n'y a aucune raison de les rétablir une fois de plus. Pour réussir Java Développeur, vous devez savoir le cadre de collections à l'envers.

17
Joonas Pulakka

Si vous devez être un programmeur de quelque nature que ce soit, vous devez comprendre toutes les structures de données de base (piles, files d'attente, tableaux, listes liées, hachables, arbres, etc.) dans certains détails. Assez au moins que vous pouvez implémenter n'importe lequel d'entre eux si vous vous êtes retrouvé dans un monde sans cadre de collections pour faire le travail pour vous.

En ce qui concerne les algorithmes, il me semble qu'ils sont plus d'outils pour les emplois, alors que vos structures de données sont des blocs de construction fondamentaux. Je ne pense pas qu'il soit aussi important de connaître les détails de la mise en œuvre de chaque algorithme que vous pourriez rencontrer. Ce que vous avez besoin de pouvoir faire est d'évaluer dans quelle mesure un algorithme fonctionnera pour un but donné. Parfois, la différence entre la profondeur d'abord et la première recherche de la première fois ou le type de trier que vous effectuez sur vos données peut faire une très grande différence pour la performance ou le succès général de votre code, tout en sachant qu'il est très important.

8
glenatron

En plus des autres réponses, je voudrais juste ajouter que l'étude des algorithmes n'est pas seulement pour savoir sur des techniques bien connues (qui est toujours importante), mais aussi de pouvoir comprendre le processus de pensée qui consiste à concevoir Une solution à un problème que vous rencontrez dans la vie réelle, pas nécessairement bien connue.

0
MAK

J'apprends Java maintenant un jour.

Je veux être un développeur d'entreprise prospère. Ensuite, quels algorithmes et structures de données je devrais être bien versé? Quels livres me recommanderiez-vous?

Pour réussir Java Developer, dois-je connaître tous les algorithmes avancés tels que ceux donnés dans CLRS?

Pouvez-vous me suggérer une liste des sujets que je devrais apprendre dans l'ordre décroissant de leur priorité?

Dis-moi le nom de certains sujets que je dois savoir. Comme la recherche, le tri, les graphiques, les arbres, etc.?

Il est bon que vous soyez hâte d'étendre et d'améliorer vos compétences de programmation. Il est toutefois important de ne pas traiter des algorithmes en tant que catalogue de choses à mémoriser. Ce que vous devez savoir pour devenir un bon développeur (en Java ou autre chose à cet égard) est de comprendre l'analyse algorithmique.

Vous apprenez cela en apprenant une sélection de quelques structures et algorithmes de données, et apprendre à 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 n'utilisons jamais 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érent de la "mémorisation" d'algorithmes et de structures de données.)

George T. Heineman, Gary Sollice et Stanley Selkow's "Algorithms en un mot" est un bon départ. "algorithmes" de Sanjoy Dasgupta, Christos Papadimitriou, et Umesh Vazirani est un autre bon manuel sous-tragravisé.

La meilleure idée consiste à prendre 9-12 cours de crédit dans la programmation avant de prendre un cours de premier cycle, de 3000 niveaux dans des algorithmes. En empêchant que l'auto-étude avec les deux livres que j'ai mentionnés pourrait être une bonne alternative (l'auto-étude pourrait ne pas être pour tout le monde, cependant.)

Bonne chance!

0
luis.espinal