On parle beaucoup de structures de données, mais je ne trouve pas une simple liste de structures de données et de leur utilisation pratique. J'essaie d'étudier pour une entrevue et je pense que cela m'aiderait, avec beaucoup d'autres. Je cherche quelque chose comme ça:
Structure de données - Exemple/Utilisé pour
Table de hachage - recherche rapide de données ... puis donnez un exemple
Tableau - ...
Arbre binaire - ...
S'il existe une ressource de ce type quelque part, faites-le moi savoir.
Merci!
EDIT: Je veux dire que wikipedia est bon et tout, mais sur la plupart des pages, ils ne listent pas les utilisations pratiques. Je cherche quelque chose de plus que cela.
Trouvé la liste dans une question similaire, précédemment sur StackOverflow:
Table de hachage - utilisée pour la recherche rapide de données - table de symboles pour les compilateurs, indexation de base de données, caches, représentation de données unique.
Trie - dictionnaire, tel que celui trouvé sur un téléphone portable pour autocomplétion et vérification orthographique.
Arbre de suffixe - recherches rapides en texte intégral utilisées dans la plupart des traitements de texte.
Stack - undo\redo opération dans les traitements de texte, évaluation des expressions l’analyse syntaxique, de nombreuses machines virtuelles telles que JVM sont orientées pile.
Files d'attente - Recherche sur les transports et les opérations où se trouvent diverses entités stockées et conservées pour être traitées ultérieurement, c'est-à-dire que la file d'attente exécute le fonction d'un tampon.
Files d'attente prioritaires - ordonnancement des processus dans le noyau
Arbres - Analyseurs, Système de fichiers
Arbre Radix - Table de routage IP
Arbre BSP - Infographie 3D
Graphes - Connexions/relations dans les sites de réseaux sociaux, Routage , réseaux de communication, organisation de données, etc.
Heap - Allocation dynamique de mémoire dans LISP
Ceci est la réponse initialement publiée par RV Pradeep
Quelques autres liens moins utiles:
Les applications ne sont répertoriées que pour certaines structures de données
Pas centré sur les applications, par un bon résumé et pertinent
Je suis dans le même bateau que toi. J'ai besoin d'étudier pour des entretiens techniques, mais la mémorisation d'une liste n'est pas vraiment utile. Si vous avez 3-4 heures à perdre et que vous souhaitez approfondir votre plongée, je vous conseille de vérifier
mycodeschool
J’ai examiné Coursera et d’autres ressources telles que des blogs et des manuels, Mais je les trouve soit assez incomplètes, soit à l’autre bout du spectre, trop denses avec la terminologie informatique requise.
Le mec dans la vidéo a un tas de conférences sur les structures de données. Ne faites pas attention aux dessins stupides, ou au léger accent du tout. Vous devez comprendre non seulement la structure de données à sélectionner, mais également certains points à prendre en compte lorsque les utilisateurs réfléchissent aux structures de données:
J'ai également posté des notes sur github si vous êtes intéressé.
Selon ma compréhension, la structure de données comprend toutes les données résidant dans la mémoire de tout système électronique pouvant être géré efficacement. Souvent, il s’agit d’un jeu de mémoire ou d’une accessibilité plus rapide des données. En termes de mémoire, il existe des compromis avec la gestion des données en fonction du coût pour le produit final de l'entreprise. Une gestion efficace nous indique comment accéder au mieux aux données en fonction des exigences principales du produit final. Ceci est une explication de très haut niveau mais la structure des données est un vaste sujet. La plupart des enquêteurs se plongent dans des structures de données qu'ils peuvent se permettre de discuter au cours des entretiens en fonction du temps dont ils disposent, qui sont des listes chaînées et des sujets connexes.
Désormais, ces types de données peuvent être divisés en composites primitifs, abstraits, abstraits, en fonction de la manière dont ils sont construits de manière logique et auxquels on accède.
J'espère que cela vous aide à plonger.
L'excellent livre " Algorithm Design Manual" de Skienna contient un énorme référentiel d'algorithmes et de structure de données.
Pour des tonnes de problèmes, les structures de données et l'algorithme sont décrits, comparés et discutent de l'utilisation pratique. L'auteur fournit également des références aux implémentations et aux documents de recherche originaux.
Le livre est bien d'avoir sur votre bureau si vous recherchez la meilleure structure de données pour votre problème à résoudre. C'est également très utile pour la préparation de l'entrevue.
Le Dictionnaire NIST des structures de données et algorithmes .
Tout classement de diverses structures de données sera au moins partiellement lié au contexte du problème. Il serait utile d’apprendre à analyser les performances des algorithmes dans le temps et dans l’espace. En général, la "grande notation O" est utilisée, par exemple. la recherche binaire est en temps O (log n), ce qui signifie que le temps pour rechercher un élément est le journal (implicitement en base 2) du nombre d'éléments. Intuitivement, puisque chaque étape élimine la moitié des données restantes comme non pertinentes, le fait de doubler le nombre d'éléments augmente le temps d'une étape. (La recherche binaire évolue plutôt bien.) La performance de l'espace concerne la croissance de la quantité de mémoire pour de plus grands ensembles de données. Notez également que la notation big-O ne tient pas compte des facteurs constants - pour les ensembles de données plus petits, un algorithme O (n ^ 2) peut encore être plus rapide qu'un algorithme O (n * log n) qui a un facteur constant plus élevé. Les algorithmes complexes ont souvent plus de travail à faire au démarrage.
Outre le temps et l'espace, d'autres caractéristiques sont notamment le fait de savoir si une structure de données est triée (les arbres et les skiplistes sont triés, les tables de hachage ne le sont pas), la persistance (les arbres binaires peuvent réutiliser des pointeurs d'anciennes versions, les tables de hachage étant modifiées à la place), etc.
Bien que vous ayez besoin d'apprendre le comportement de plusieurs structures de données pour pouvoir les comparer, l'une des façons de comprendre en quoi leurs performances diffèrent consiste à en étudier de plus près quelques-unes. Je suggérerais de comparer des listes à lien unique, des arbres de recherche binaires et des listes à sauter , qui sont toutes relativement simples, mais présentent des caractéristiques très différentes. Réfléchissez au travail nécessaire pour trouver une valeur, ajouter une nouvelle valeur, trouver toutes les valeurs dans l’ordre, etc.
Il existe divers textes sur l’analyse des performances des algorithmes/structures de données que les gens recommandent, mais ce qui les a vraiment éclairés est l’apprentissage d’OCaml. Le fait de traiter des structures de données complexes est le point fort de ML, et son comportement est bien plus clair lorsqu'il est possible d'éviter les pointeurs et la gestion de la mémoire, comme en C. (Apprendre à OCaml simplement pour comprendre les structures de données est presque certainement le chemin le plus long, cependant. :))
Peu plus d'applications pratiques des structures de données
Arbres rouge-noir (Utilisé en cas d'insertion/suppression fréquentes Et de peu de recherches) - Clustering k-mean utilisant un arbre noir rouge, bases de données, base de données simple d'esprit, recherche de mots dans les dictionnaires, recherche sur le Web
Arbres AVL (Plus de recherche et moins d'insertion/suppression) - Analyse et exploration de données, ainsi que les applications qui impliquent davantage de recherches
Min Heap - Algorithmes de clustering
Ci-dessous la liste des sites où vous pouvez comprendre l’utilisation réelle de la structure de données et de l’algorithme Hacker Earth
J'espère que ce site Web sera un excellent endroit pour apprendre l'utilisation pratique des structures de données et des algorithmes.