1. Qu'est-ce qu'une structure de données et qu'est-ce qu'un algorithme
La définition de concepts trop académiques est relativement abstraite et difficile à comprendre. Nous comprenons les deux concepts de structure de données et d'algorithme à partir des niveaux large et étroit.
Angle généralisé
D'une manière générale, la structure des données fait référence à la structure de stockage d'un groupe de données. Un algorithme est un ensemble de méthodes de manipulation de données. En bref, la structure des données résout le "comment mettre" les données, et l'algorithme détermine le "comment utiliser" les données.
Prenons l'exemple de la bibliothèque pour mieux comprendre:
Le volume de livres dans la bibliothèque est énorme. Premièrement, nous devons créer des salles de lecture par catégorie, comme les sciences sociales, les sciences et technologies, les journaux et les périodiques. Dans chaque salle de lecture, ils sont classés selon le numéro d'index du livre. Il s'agit de la "structure des données". Lorsque nous voulons emprunter un livre, nous pouvons aller dans chaque salle de lecture pour en trouver un par un, ou rechercher le numéro d'index pour accéder directement à la salle de lecture correspondante. Ces différentes méthodes de recherche sont en fait des "algorithmes".
2. Angle étroit
Dans un sens étroit, il fait référence à certaines structures de données et algorithmes typiques, tels que les files d'attente, les piles, les tas, la recherche binaire et la programmation dynamique.
Deuxièmement, la relation entre la structure des données et l'algorithme
Les deux concepts de structure de données et d'algorithme ont la signification de "le focus n'est pas désactivé, Meng n'est pas désactivé". La raison pour laquelle nous les assemblons toujours est que les structures de données et les algorithmes sont complémentaires. La structure de données est pour l'algorithme, l'algorithme doit agir sur une structure de données spécifique. Nous ne pouvons pas isoler la structure de données en termes d'algorithmes, ni isoler les algorithmes en termes de structures de données. La structure des données est statique, c'est juste un moyen d'organiser les données. Si vous n'opérez pas et ne construisez pas d'algorithmes par dessus, il est inutile d'isoler les structures de données existantes.
3. Objectif d'apprentissage
1. Analyse de complexité
Pour apprendre les structures de données et les algorithmes, nous devons d'abord saisir le concept le plus important dans les structures de données et l'analyse de complexité des algorithmes.
L'analyse de complexité représente près de la moitié du cours sur la structure des données et l'algorithme, et est l'essence même de la structure des données et de l'apprentissage des algorithmes. Les structures de données et les algorithmes résolvent le problème de la façon de stocker et de traiter les données de manière plus économique et plus rapide. Par conséquent, une méthode de prise en compte de l'efficacité et de la consommation des ressources est nécessaire. Il s'agit d'une analyse de la complexité. On peut dire que l'analyse de la complexité est la compétence divine de Jiuyang. Avec la base des compétences internes, il sera rapide d'apprendre les mouvements.
2. Structure des données et corps de l'algorithme
Examinons d'abord un diagramme de trame afin d'établir une compréhension globale des structures de données et des algorithmes:
Bien sûr, en tant que débutants ou ingénieurs non algorithmiques, nous n'avons pas besoin de maîtriser tous les points de connaissance de l'image ci-dessus. De nombreuses structures de données et algorithmes avancés sont rarement utilisés dans le développement quotidien, tels que les graphiques bipartites et le flux maximal. Apprendre à saisir les principales contradictions et à conquérir les deux "dix premiers" suivants suffit pour faire face aux entretiens et au travail quotidien:
Dix principales structures de données
Tableau, liste liée, pile, file d'attente, table de hachage, arbre binaire, tas, table de saut, graphique, arbre Trie;
Dix premiers algorithmes
Récursivité, tri, recherche binaire, recherche, algorithme de hachage, algorithme gourmand, algorithme de division et de conquête, algorithme de retour en arrière, programmation dynamique, algorithme de correspondance de chaînes.
Maîtrisez ces structures et algorithmes de données de base, puis apprenez des structures et des algorithmes de données plus complexes, il est facile de commencer.
4. Méthodes d'apprentissage
Dans le processus d'apprentissage des structures de données et des algorithmes, nous devons prêter attention, pas par cœur. Faites attention aux quatre problèmes suivants: "origine", "auto-caractéristiques", "problèmes pouvant être résolus", "scénarios d'application réels". Le processus d'apprentissage des structures de données et des algorithmes est un très bon processus de réflexion sur la formation. Par conséquent, ne vous souvenez pas passivement, pensez plus dialectiquement et demandez pourquoi.
1. Apprenez en pratiquant, brossez les questions de manière appropriée
Les structures de données et les algorithmes ont des exigences élevées pour la pratique. En plus de la pratique pratique dans le processus d'apprentissage, cela prend encore 1 à 2 heures par semaine, en se concentrant sur les structures de données et les algorithmes impliqués dans l'apprentissage de cette semaine, tous écrits par vous-même et mis en œuvre dans le code. Ce sera bien mieux que de simplement regarder ou écouter.
En ce qui concerne la préparation avant l'entretien, vous devez toujours brosser la bonne quantité de questions. Ne perdez pas trop de temps à brosser les questions. À moins que vous ne souhaitiez interviewer des entreprises comme Google et Facebook, leurs questions algorithmiques sont très, très difficiles, et vous devez brosser beaucoup de questions afin d'améliorer le taux de précision des tests à court terme. S'il s'agit d'un entretien technique pour une entreprise nationale, même BAT, tant que vous maîtrisez les principes et pratiquez avec modération, cela suffit.
2. Réfléchissez et discutez davantage
3. Durée limitée
Un des concepts dont j'ai profité en regardant les cours de vocabulaire de New Oriental quand j'étais au collège était: je dois établir un programme horaire détaillé pour l'apprentissage. N'étirez pas trop le front et utilisez du temps concentré pour terminer l'étude. Sinon, si un semestre passe, vous pouvez toujours rester dans l'abandon. Je pense que c'est un principe général: lorsque vous étudiez des structures de données et des algorithmes, vous devez également faire un bon plan de temps pour vous-même.
4. Petits objectifs
Dans le processus d'apprentissage ennuyeux, vous pouvez vous fixer un objectif pratique, tout comme la mise à niveau de Daguai. Par exemple, écrivez un blog après chaque partie de l'étude, ou trouvez des domaines où les informations sont incorrectes ou peuvent être améliorées. Cela peut conduire à une rétroaction positive pour l'apprentissage.
5. Répétez
L'apprentissage est un processus d'itérations répétées et de précipitations continues, ne vous attendez pas à le réaliser du jour au lendemain. Il est normal que certains points de connaissance soient appris une fois et ne puissent pas être entièrement compris. En étudiant plusieurs fois à plusieurs reprises, vous pourrez certainement "savoir ce qui est nouveau".