Data Structures Explained for Beginners - How I Wish I was Taught

Internet Made Coder
10 Sept 202217:06

Summary

TLDRDans cette vidéo, l'animateur explique initialement combien les structures de données et les algorithmes peuvent sembler ennuyeux et peu importants pour un programmeur débutant. Cependant, après une compréhension approfondie de ces sujets, il a changé d'avis et trouve désormais cette partie de l'informatique et de la science des ordinateurs particulièrement belle. Le script propose une explication simple des structures de données, en utilisant des exemples concrets pour montrer l'importance de l'organisation des données dans la mémoire d'un ordinateur. Il compare la structure de données à la façon dont on range des objets, comme le matériel de tournage d'une vidéo, pour une meilleure accessibilité. Le texte souligne également que choisir la bonne structure de données dépend des opérations que l'on souhaite effectuer sur les données. La vidéo met en avant la puissance des structures de données et l'abstraction qui permet aux utilisateurs de ne pas avoir à comprendre les complexités sous-jacentes pour utiliser efficacement les programmes. Enfin, l'animateur encourage les spectateurs à s'abonner à sa chaîne pour recevoir un plan étape par étape pour maîtriser ces sujets et réussir les entretiens de codage.

Takeaways

  • 📚 Les structures de données sont des moyens d'organiser les données dans la mémoire d'un ordinateur de manière efficace.
  • 🤖 L'importance des structures de données et des algorithmes est cruciale pour écrire des programmes logiques et efficaces.
  • 🚀 Les entreprises valorisent les programmeurs qui maîtrisent ces concepts pour améliorer la qualité de leur code et la performance de leurs applications.
  • 🧠 La compréhension des structures de données permet de résoudre des problèmes de manière plus efficace, en choisissant la structure adaptée aux besoins spécifiques.
  • 🔗 Une liste est la structure de données de base qui permet de regrouper des éléments, mais elle a ses limites, notamment lorsqu'il s'agit d'ajouter des éléments de manière continue.
  • 🔄 Une liste chaînée est un exemple de structure de données qui permet d'ajouter des éléments sans avoir à déplacer tous les autres, améliorant ainsi l'efficacité.
  • 🔑 Les structures de données plus complexes, comme la file d'attente prioritaire, sont conçues pour répondre à des besoins spécifiques, comme le tri d'éléments selon une certaine logique.
  • 🛠 L'abstraction est un principe clé en informatique, qui permet aux utilisateurs de fonctionnalités sans avoir à comprendre les détails techniques sous-jacents.
  • 🌐 Les algorithmes et les structures de données sont au cœur de la façon dont les grandes entreprises gèrent et traitent des milliards de données.
  • 📈 La maîtrise de ces concepts est essentielle pour devenir un programmeur efficace et pour réussir les entretiens de codage.
  • 📈 Pour approfondir la compréhension des structures de données et des algorithmes, il est recommandé de suivre un plan étape par étape et de se baser sur des ressources fiables.

Q & A

  • Pourquoi les structures de données sont-elles importantes pour un programmeur?

    -Les structures de données sont importantes car elles permettent d'organiser efficacement les données en mémoire, ce qui est crucial pour la performance et l'efficacité des programmes. Elles sont également un aspect clé du processus de sélection des employés en informatique, car elles reflètent la capacité d'un programmeur à écrire du code logique et efficace.

  • Comment une liste en langage de programmation gère-t-elle l'ajout d'un nouvel élément ?

    -Lorsqu'un nouvel élément est ajouté à une liste, si la mémoire est déjà pleine, la liste est déplacée vers une autre partie de la mémoire et plus de mémoire est allouée. Cela peut être inefficace si l'on ajoute constamment des données, car chaque ajout implique un déplacement.

  • Quels sont les inconvénients d'utiliser une liste pour gérer des données qui augmentent constamment ?

    -L'inconvénient principal est l'inefficacité liée au déplacement continu de la liste dans la mémoire à chaque ajout d'un nouvel élément. Cela peut ralentir les performances, surtout si de nombreux ajouts sont effectués fréquemment.

  • Quelle est une alternative à une liste pour gérer des données qui augmentent constamment ?

    -Une alternative est l'utilisation d'une liste chaînée (linked list). Dans une liste chaînée, chaque élément pointe vers le suivant, permettant ainsi d'ajouter de nouveaux éléments sans avoir besoin de déplacer la totalité de la liste en mémoire.

  • Comment fonctionne une liste chaînée ?

    -Une liste chaînée est constituée de nœuds qui contiennent une valeur de données et un pointeur vers le nœud suivant. Cela permet d'ajouter de nouveaux éléments en mémoire sans avoir à déplacer tous les autres éléments, améliorant ainsi l'efficacité pour les opérations d'ajout.

  • Quels sont les avantages d'une liste chaînée par rapport à une liste ordinaire ?

    -Les avantages incluent une meilleure efficacité lors de l'ajout d'éléments, car il n'est pas nécessaire de déplacer tous les éléments existants. Cependant, l'accès aux éléments peut être moins efficace car il faut parcourir la liste chaînée jusqu'à ce qu'on atteigne l'élément souhaité.

  • Quels sont les autres types de structures de données que le script mentionne ?

    -Le script mentionne également la structure de données 'queue de priorité' (priority queue), qui est utile pour organiser les données en fonction d'une certaine priorité, comme par exemple pour trier les passagers d'un vol en fonction de leur classe d'avion.

  • Comment la structure de données 'queue de priorité' est-elle utile pour une entreprise comme une compagnie aérienne ?

    -La queue de priorité permet de structurer les données (par exemple, les informations des passagers) en fonction d'un ordre de priorité défini par l'entreprise. Cela facilite le traitement et l'accès aux informations des passagers selon leur classe d'avion.

  • Que signifie l'abstraction dans le contexte des structures de données et de la programmation en général ?

    -L'abstraction permet de masquer les détails complexes et les opérations internes des structures de données aux utilisateurs finaux. Les programmeurs utilisent l'abstraction pour concevoir des programmes qui fonctionnent de manière efficace et logique, sans que les utilisateurs aient besoin de comprendre comment ils fonctionnent.

  • Pourquoi les entreprises accordent-elles une grande importance aux connaissances en structures de données et en algorithmes ?

    -Les entreprises accordent de l'importance à ces connaissances car elles reflètent la capacité d'un programmeur à organiser efficacement les données et à écrire du code performant. Cela est essentiel pour gérer de grandes quantités de données et pour assurer l'efficacité des opérations de l'entreprise.

  • Quels sont les ressources recommandées pour approfondir ses connaissances en structures de données et en algorithmes ?

    -Le script suggère de s'abonner au canal pour obtenir des vidéos éducatives sur le sujet, ainsi que de chercher un plan d'étude étape par étape pour une compréhension approfondie et une maîtrise efficace des structures de données et des algorithmes.

  • Comment le script compare-t-il la conception de structures de données efficaces à l'organisation d'un espace physique ?

    -Le script utilise l'analogie de l'organisation d'un espace physique, comme la façon dont le locuteur range son équipement de tournage vidéo, pour expliquer comment les structures de données organisent les données de manière logique et accessible, tout comme on rangerait des objets pour une utilisation efficace.

Outlines

00:00

😀 Introduction aux structures de données et algorithmes

Le premier paragraphe explique que l'étude des structures de données et des algorithmes n'est pas considérée comme passionnante par la plupart des programmeurs débutants. L'auteur partage son expérience personnelle d'abord perçue comme ennuyeuse, mais qui a évolué en une véritable passion après une meilleure compréhension de ces sujets. Il propose de donner une explication simple des structures de données pour aider à la compréhension intuitive et à l'appréciation de leur beauté. Le paragraphe souligne l'importance de ces connaissances pour écrire des programmes efficaces et logiques, ce que recherchent les entreprises.

05:00

🔍 Limitations des listes et introduction des listes chaînées

Dans le deuxième paragraphe, l'auteur discute des limitations des listes (ou tableaux) en termes de mémoire allouée et de l'inconvénient d'avoir à déplacer la liste dans la mémoire pour y ajouter un nouvel élément. Il propose ensuite la structure de données appelée liste chaînée comme alternative. Cette structure utilise des nœuds qui contiennent des données et des pointeurs vers les nœuds suivants, permettant ainsi une gestion plus efficace de la mémoire et une augmentation plus simple de la liste sans avoir à déplacer tous les éléments.

10:00

🛫 Exemples de structures de données pour des besoins spécifiques

Le troisième paragraphe explore des exemples plus complexes, comme la structure de données appelée 'queue de priorité', qui est utile pour organiser les données par ordre de priorité, comme dans le cas des passagers d'avions avec des classes de service différentes. Cette structure est capable de trier automatiquement les éléments ajoutés en fonction de leur priorité. L'auteur souligne que les structures de données sont non seulement définies par leur organisation, mais aussi par les opérations effectuées sur les données, et que la conception appropriée de ces structures est essentielle pour éviter les problèmes et assurer un fonctionnement efficace du programme.

15:02

📚 Importance de la compréhension des structures de données pour le programmeur

Le quatrième paragraphe met en évidence l'importance pour un programmeur de comprendre les concepts de programmation tels que les structures de données. Il est décrit comme l'équivalent de savoir organiser efficacement son travail, ce qui est essentiel pour les entreprises, en particulier les grandes entreprises qui traitent d'énormément de données. L'auteur recommande de s'abonner à la chaîne pour recevoir des vidéos similaires sur les algorithmes et de suivre un plan étape par étape pour maîtriser ces sujets et réussir les entretiens de codage.

Mindmap

Keywords

💡Data Structures

Les structures de données sont des méthodes d'organisation des données dans la mémoire d'un ordinateur. Elles sont essentielles pour la programmation car elles déterminent comment les données sont stockées, accessibles et manipulées. Dans la vidéo, l'importance de comprendre les structures de données est soulignée comme clé pour écrire des programmes efficaces et logiques, ce qui est crucial pour les entreprises.

💡Algorithmes

Les algorithmes sont des procédures ou ensembles d'instructions pour résoudre un problème ou accomplir une tâche. Ils jouent un rôle central en informatique et en programmation, car ils déterminent comment les structures de données sont utilisées pour atteindre un résultat. La vidéo mentionne que l'étude des algorithmes est tout aussi importante que celle des structures de données.

💡Mémoire Informatique

La mémoire informatique fait référence à la mémoire vive (RAM) d'un ordinateur où les données sont stockées temporairement pour être traitées. La façon dont les données sont organisées dans la mémoire est cruciale pour les performances d'un programme. La vidéo utilise l'analogie des registres de mémoire pour expliquer la localisation et l'accès aux données.

💡Liste chaînée

Une liste chaînée est une structure de données dans laquelle chaque élément contient des données et un pointeur vers le suivant. Cela permet d'ajouter ou de supprimer des éléments sans avoir à réorganiser toute la structure, ce qui est plus efficace pour certaines tâches. La vidéo décrit la liste chaînée comme une solution pour gérer des collections de données croissantes.

💡Priorité

La priorité fait référence à l'importance ou à la précédence accordée à certaines données par rapport à d'autres. Dans la vidéo, l'exemple d'une file d'attente prioritaire pour les passagers d'avion est utilisé pour montrer comment les structures de données peuvent être utilisées pour organiser les données en fonction de critères spécifiques.

💡Abstraction

L'abstraction est le processus par lequel les détails complexes sont simplifiés ou masqués, permettant aux utilisateurs de se concentrer sur les aspects importants sans avoir à comprendre les mécanismes sous-jacents. La vidéo souligne que la conception de programmes efficaces repose sur l'abstraction pour rendre les interfaces utilisateur intuitives et faciles à utiliser.

💡Efficacité

L'efficacité est la capacité d'un programme à atteindre ses objectifs de manière rapide et avec peu de ressources. La vidéo met en évidence l'importance de l'efficacité dans la conception des programmes, en utilisant les structures de données et les algorithmes pour optimiser les performances.

💡Programmation Logique

La programmation logique fait référence à la manière dont les programmes sont écrits de manière à être cohérents, clairs et bien organisés. La vidéo explique que la maîtrise des structures de données et des algorithmes est essentielle pour écrire du code logique et structurer les programmes de manière efficace.

💡Collection de données

Une collection de données est un ensemble de données similaires ou interconnectées qui sont regroupées pour être traitées ensemble. Dans la vidéo, les exemples de listes et de files d'attente montrent comment les collections de données peuvent être organisées et manipulées à l'aide de différentes structures de données.

💡Définition de classes

La définition de classes est un concept de programmation orientée objet qui permet de créer des modèles pour les structures de données et les algorithmes. Dans la vidéo, la création d'une classe 'Liste chaînée' est mentionnée pour montrer comment les structures de données peuvent être définies et utilisées dans un programme.

💡Méthodes

Les méthodes sont des fonctions définies au sein d'une classe qui décrivent les actions ou les opérations qui peuvent être effectuées sur les instances de cette classe. La vidéo utilise l'exemple de la méthode 'append' dans une liste chaînée pour illustrer comment les opérations sont effectuées sur les structures de données.

Highlights

L'auteur a initialement trouvé l'étude des structures de données et des algorithmes ennuyeuses, mais a changé d'avis après une compréhension approfondie.

Les structures de données sont présentées comme la manière d'organiser les données dans la mémoire d'un ordinateur.

L'organisation des données affecte l'efficacité et la logique du programme écrit.

Maîtriser les structures de données et les algorithmes est crucial pour écrire des programmes efficaces et logiques.

Les entreprises valorisent les programmeurs qui possèdent les connaissances fondamentales et peuvent les appliquer dans leur code de production.

La liste (array) est la première structure de données appris, permettant de regrouper des éléments de données.

Les limitations des listes, comme l'ajout d'éléments dans une mémoire déjà allouée, peuvent entraîner des inefficacités.

Les listes chaînées (linked lists) sont une alternative pour gérer des collections de données en évitant les redéfinitions de mémoire.

Les listes chaînées utilisent des pointeurs pour relier les éléments de données dispersés dans la mémoire.

Les structures de données plus complexes, comme les files d'attente prioritaires (priority queues), sont adaptées à des besoins spécifiques.

Les opérations définies sur les données sont tout aussi importantes que l'organisation des données elle-même.

L'abstraction permet aux utilisateurs de ne pas connaître les détails techniques de la structure de données utilisée.

Les structures de données sont essentielles pour organiser efficacement les données et les opérations sur celles-ci.

Les entreprises cherchent des programmeurs capables d'organiser leur code de manière efficace, ce qui est reflété par la maîtrise des structures de données.

Le présentateur propose une méthode étape par étape pour maîtriser les structures de données et les algorithmes.

Un abonnement à la chaîne est recommandé pour suivre les futurs contenus sur les algorithmes et la maîtrise des structures de données.

Un lien vers une vidéo décrivant un plan étape par étape pour apprendre les structures de données et passer les entretiens de codage est fourni.

Transcripts

play00:00

for most people studying data structures

play00:02

and algorithms is not the most exciting

play00:04

part of programming and trust me this is

play00:07

exactly the feeling that i used to have

play00:09

when i first started learning about data

play00:11

structures and algorithms to me they

play00:12

just seemed so boring and i just

play00:14

couldn't quite understand why they are

play00:16

even important and this seemed like

play00:18

something that i just sort of have to

play00:20

learn to get my foot through the door

play00:21

and after that i can just forget about

play00:23

them and focus on what i'm actually

play00:25

excited about like coding tinderbots

play00:28

but now that i've actually properly

play00:30

learned about these topics and taking

play00:31

the time to actually understand not only

play00:33

what they are but why they are important

play00:35

i've actually completely changed my mind

play00:37

i think data reaction algorithms is one

play00:39

of the most beautiful parts of

play00:41

programming and computer science and in

play00:43

this video i want to give you a glimpse

play00:46

of this beauty by giving you literally

play00:48

the dumbest most simple explanation of

play00:51

what data structures are to give you

play00:53

sort of an intuitive understanding that

play00:55

you can then take into your actual study

play00:58

of each particular data structure so you

play01:00

can have this sort of framework in your

play01:02

mind going into it and hopefully

play01:04

hopefully you may even start to

play01:06

appreciate the beauty that implementing

play01:09

data structures can actually have and

play01:11

believe me i remember exactly what it

play01:13

was like to not understand anything

play01:15

about data structures this video is

play01:17

completely language agnostic so

play01:19

whichever programming language you've

play01:20

learned in the past you can watch this

play01:22

video and then at the end as always i

play01:24

will give you the exact resources that i

play01:26

use in a step-by-step way to go from

play01:29

this conceptual high-level understanding

play01:31

into mastering all of these topics i'm

play01:34

really passionate about this reaction

play01:36

algorithms so if you enjoyed this video

play01:38

there will be a very similar video

play01:39

coming on algorithms as well so if you

play01:42

do enjoy this video leave a like down

play01:44

below because how many people like this

play01:45

video will then sort of tell me whether

play01:47

i should make it or not okay so what are

play01:51

data structures at an extremely high

play01:53

level all a data structure is is a way

play01:57

of organizing data so whenever you're

play02:00

writing a program the purpose why

play02:01

computers exist in the first place is

play02:03

that we have some data which can be like

play02:06

numbers or maybe it's a string and then

play02:09

we have something that we want to do

play02:12

with that data to produce some useful

play02:16

result it turns out that it really

play02:17

matters how we actually organize data in

play02:20

a computer's memory and i know that

play02:22

right now now this makes any sense and

play02:25

that is why i have organized a couple of

play02:27

very specific examples which will allow

play02:29

you to actually understand it again in

play02:32

the dumbest way possible in a way that

play02:34

even a literal dumbass like me could

play02:37

understand how this work but first let's

play02:39

just briefly talk about

play02:41

why this idea of organizing data is

play02:43

actually so important to the point where

play02:45

if you want to get a job studying data

play02:47

structures and algorithms is literally

play02:49

the most important thing that you need

play02:51

to know if you're good at data

play02:52

structures and algorithms you will be

play02:54

good at writing programs in a logical

play02:56

way in a way that makes sense in a way

play02:59

that is efficient and what companies

play03:01

want to see is that you have that

play03:03

fundamental knowledge and those

play03:05

principles that you can apply in their

play03:08

production code to make the gold really

play03:10

good and therefore that you as the

play03:13

programmer are worth the money that the

play03:15

company is spending on you so data

play03:17

structure is a way of organizing data in

play03:19

the computer's memory the way the

play03:21

computer's memory works in again a

play03:22

really dumb sort of simplified way you

play03:24

have these memory blocks which are

play03:26

called like memory registers all these

play03:28

registers hold some kind of value maybe

play03:31

this is a two this is a five this is a

play03:33

seven and whenever you're writing a

play03:34

program you're probably not just doing

play03:36

something with one piece of data like

play03:38

these two here often you'll have

play03:40

something like a collection of data

play03:42

that's sort of related to each other in

play03:44

some way maybe it's a list of numbers

play03:45

like a list of transactions that you

play03:47

want to add together or something like

play03:48

that so it makes sense to actually

play03:50

organize this data close to each other

play03:53

in the computer's memory so that it's

play03:56

easy for you to access all these

play03:58

different pieces of data rather than

play04:00

having to define separate variables like

play04:02

a equals two or b equals five you can

play04:04

just define one variable one data

play04:07

structure called a list and this is the

play04:09

first data structure that we learned the

play04:10

most basic one and then you put all of

play04:12

these numbers into this one variable so

play04:14

then in the future if you want to access

play04:16

the middle element of this list you can

play04:18

just go list one from the computer's

play04:20

perspective when all of these variables

play04:22

are stored close together to each other

play04:24

accessing them together and maybe

play04:26

looping over them or something is a lot

play04:28

easier this is sort of the computer

play04:30

equivalent of let's say like when i'm

play04:32

making these youtube videos right

play04:34

there's multiple pieces of gear that i

play04:36

always sort of need and so whenever i

play04:38

want to start filming a video it makes

play04:39

sense if i've sort of placed all my

play04:42

camera gear in the same part of the room

play04:44

so all i have to do is go to that part

play04:45

of the room grab the gear and start

play04:47

filming and storing values in something

play04:49

like a list is just a computer

play04:51

equivalent of this same principle let's

play04:53

talk about a limitation that a very

play04:55

simple data structure like a list could

play04:57

have the way lists or arrays are usually

play05:00

defined in a programming language is

play05:01

there a certain amount of memory in this

play05:03

case we've just allocated three

play05:06

registers of memory to our list here but

play05:08

what happens if we now want to add a

play05:10

fourth element to the list well you

play05:12

might say that well that's easy we just

play05:14

sort of added here but what if this

play05:16

register in the memory was already taken

play05:18

up by a different piece of data maybe we

play05:20

already had a string like hello in here

play05:23

now we put the eight on top of it so

play05:25

this hello gets replaced and maybe we

play05:28

had a different part of the programmer

play05:29

we'll be using that piece of string and

play05:31

now instead of hello it's certainly an

play05:32

eight and just everything crashes right

play05:34

so the way lists are usually actually

play05:37

defined under the hood in the language

play05:39

is that if you add an element to a list

play05:40

it will actually take this list and move

play05:43

it to a completely different part of the

play05:46

memory and then allocate more memory to

play05:48

it even if you don't understand anything

play05:49

about low level programming you might

play05:51

see that this is sort of very

play05:52

inefficient if you know that you'll be

play05:54

constantly adding data to a list every

play05:56

time moving into a different location in

play05:58

the memory can become very slow so that

play06:00

is why you can see that actually if we

play06:02

know that the thing we want to do with

play06:04

our data is to

play06:06

keep adding stuff to it and we know that

play06:08

in the future we'll be adding a lot of

play06:10

stuff to it it actually doesn't make

play06:12

sense to use a list and there might be a

play06:14

better way to organize that data again

play06:16

for this purpose that we have here and

play06:18

in particular for something like this we

play06:19

might use something called a linked list

play06:22

and what a linked list is instead of

play06:24

storing your items just sequentially

play06:26

after each other in the memory what

play06:27

we're doing is we're defining this node

play06:29

structure so we just have two

play06:32

places in memory where the first one is

play06:34

a piece of data like r2 here and the

play06:36

next one is a pointer to a different

play06:40

node somewhere else in the memory it

play06:42

doesn't matter where it is essentially

play06:43

this second item of this node will be

play06:46

pointing to the next element which will

play06:48

again just be a node and the way this

play06:50

actually works is that these memory

play06:52

registers are numbered in the computer's

play06:54

memory let's say this is a number five

play06:56

is number six and then somewhere

play06:58

randomly in the memory we have a memory

play07:00

register i don't know like 102 and here

play07:03

as the second element of this first node

play07:05

we just have the memory address where we

play07:08

know that the second element will be and

play07:10

again for the next one we would have

play07:11

maybe a pointer to register 463

play07:15

and this one will then know that okay

play07:17

the next element of our link deletion

play07:19

will be in memory location

play07:21

463 and again using our camera example

play07:24

here let's say i'm using all my camera

play07:26

gear in this part of the room here but

play07:28

now there's no space anymore what i

play07:29

could do is include like a post-it note

play07:32

in that area to see that okay the next

play07:34

batch of my gear is going to be in this

play07:36

area of my room maybe there's a note

play07:38

there that says i don't know under the

play07:39

bed or something so that i know where to

play07:41

go to find the next part of the gears

play07:43

and this way you can essentially just

play07:44

keep increasing this chain of values or

play07:47

chain of camera gear almost indefinitely

play07:50

as long as you actually have a space in

play07:52

your memory or space in your room all

play07:55

you have to do is just know where the

play07:57

very last element of the list is and

play07:59

then users have to find an empty

play08:01

location anywhere in your memory and

play08:03

then add

play08:04

another node into your linked list and

play08:06

so you can see how we already with this

play08:09

very simple requirements we already sort

play08:10

of have a need for a slightly more

play08:12

complex data structure and from the

play08:14

programmer's perspective when you want

play08:15

to add something to the list you just

play08:17

call the linked list sort of a method

play08:19

that's defined inside of the data

play08:20

structure to append an element in the

play08:22

list and under the hood all of this

play08:23

stuff is happening all this sort of

play08:25

drama is happening but the programming

play08:26

doesn't even need to know anything about

play08:28

it but crucially if the designer of this

play08:30

program hadn't designed this in the

play08:32

correct way it could be causing problems

play08:34

like this and causing the whole hardware

play08:37

to essentially crash or explode or

play08:39

whatever horrible things would happen

play08:41

but again obviously even the linked list

play08:42

also has downsides let's say what's

play08:45

really important in the specific

play08:46

application we're developing is for

play08:48

example accessing elements in the middle

play08:50

of the list like accessing this one

play08:52

right here now this specific operation

play08:54

is actually a lot easier to do in an

play08:56

array or a list like data structure we

play08:58

just call list one like this here

play09:00

whereas with a link to this we just sort

play09:02

of have to loop over the list until we

play09:04

arrive at the item that we're looking

play09:06

for which is a lot more expensive so as

play09:07

you can see again which data structure

play09:09

we're using always depends on the

play09:10

specific thing we're trying to do and

play09:12

sort of the specific things that you can

play09:14

see the user of that program needing to

play09:16

do a lot of the time and the way all of

play09:19

this like the linked list would be

play09:20

implemented in an actual programming

play09:22

language or python is that you would do

play09:24

something like create a class called

play09:25

linked list then you would create method

play09:27

inside that do all of this magic and

play09:30

then there will be a client where all

play09:32

they would have to do is call this

play09:34

append method and it would simply just

play09:37

do all of this magic behind the scenes

play09:39

and that is really the beauty of data

play09:41

structures and i know that all the

play09:42

details of this might be a bit fuzzy for

play09:44

you again the point of this video is not

play09:46

so that you can understand all these

play09:47

details it's just to give you an idea of

play09:50

why different data structures even exist

play09:52

if my sort of weird way of explaining

play09:55

data structures is making sense to you

play09:56

at all i would appreciate it if you

play09:58

could tap the like button down below in

play10:00

the description so let's now move on to

play10:02

a couple of slightly more complex

play10:04

examples to really drill this in and to

play10:06

make sure that you really understand

play10:08

what's going on here but first a word

play10:10

from our sponsor if you have a business

play10:12

or you're working on a project that

play10:14

requires e-signature you want to make

play10:16

sure that your documents are signed

play10:17

securely fast and in a legally binding

play10:20

way so if that's you

play10:22

you need to listen the sign now api is a

play10:24

powerful e-signature tool that allows

play10:26

you to embed e-signature on your website

play10:29

it's free to test fast to deploy and

play10:31

will allow you to not worry about

play10:33

document approval cycles and instead

play10:35

focus your time on growing your business

play10:38

developers particularly love site now's

play10:40

easy to use and detailed documentation

play10:42

with clear coding examples as well as

play10:44

great video tutorials on how to get

play10:46

started which makes implementing the api

play10:48

extremely easy in any programming

play10:51

language the synonym api is available

play10:53

through straightforward sdks and allows

play10:55

you to complete entire document approval

play10:58

cycles from uploading documents to

play10:59

tracking signature progress and not only

play11:01

that design now api make sure that your

play11:03

apps keep running with

play11:05

99.99

play11:07

uptime and in accordance with all the

play11:08

required compliance and security

play11:11

requirements so if that is something

play11:12

that sounds useful for your app you are

play11:15

in luck because they currently have a

play11:16

unique offer on the market which gives

play11:18

you 250 legally binding e-signatures for

play11:21

free so if you don't want to miss out on

play11:23

that click the link down below in the

play11:24

description to create your free sandbox

play11:27

account and start building dynamic

play11:29

e-signature workflows today thank you

play11:31

for sign now for sponsoring this video

play11:33

and now back to the tutorial so in

play11:35

practice we obviously have a lot more

play11:36

even more complicated requirements for

play11:38

things we want to do with data let's say

play11:40

you are an airline and you want to sort

play11:42

of structure the data about all the

play11:44

people who have bought tickets to some

play11:46

flights what makes sense for you is

play11:47

probably not just to group stuff

play11:49

together randomly in the computer's

play11:51

memory like for example in the order

play11:52

that they bought the tickets because

play11:53

what you probably really want to do is

play11:56

order them in some sort of priority

play11:58

where the people who have bought first

play11:59

class tickets are first but then when

play12:01

they want to do something with it they

play12:03

can see the first class passengers first

play12:04

and then the business class passengers

play12:06

and then the peasant economy passengers

play12:09

like me so it would be very useful for

play12:11

these airline operators to have a data

play12:13

structure that would allow them to group

play12:16

data in a way like this and it turns out

play12:18

this is a very common requirement in

play12:19

many different computer programs that is

play12:21

why a very common data structure that is

play12:23

used is something called a priority

play12:25

queue for this you would define

play12:26

essentially a linked list just like this

play12:28

but essentially every time when you're

play12:30

adding something to the list but the add

play12:32

method wouldn't just be doing this it

play12:34

wouldn't just be adding it to the end of

play12:36

the list but rather every time we're

play12:37

adding a person it would do some sort of

play12:39

operations which automatically sort of

play12:42

orders the list in the way that the

play12:44

airline wants so it orders it in a

play12:46

priority order so here what we would

play12:48

probably have is instead of just a piece

play12:50

of data and the link to the next node in

play12:51

the list we would have also a field for

play12:55

the priority class of the passenger so

play12:58

we would have a node that looks

play12:59

something like this where there's three

play13:01

values there's the actual person

play13:02

probably this would already be something

play13:04

like a dictionary with like their name

play13:06

and their birthday the price they paid

play13:09

or whatever we would just have a value

play13:10

that indicates that this is a business

play13:12

class passenger and here again we would

play13:14

have the pointers or the memory address

play13:17

of the next person on the list and then

play13:19

every time we're adding a person we

play13:21

would have defined inside the data

play13:23

structures of app operations that

play13:25

automatically perhaps it calls a

play13:26

different function to reorder all the

play13:29

passengers in such a way that this

play13:31

passenger will entity do the correct

play13:33

location of the list so as you can see a

play13:35

lot of the time even though you might

play13:36

think about data structures it's just

play13:37

about the structure so where we put the

play13:40

data a lot of the time especially these

play13:42

more complex data structures are a lot

play13:44

more about the operations that we want

play13:46

to do with that data and that is really

play13:48

the other thing that you should keep in

play13:50

mind that when you're defining data

play13:51

structures is really not just the

play13:53

organization of the data but also the

play13:55

operations that we define on that data

play13:57

and again the point here is that the

play13:59

airline operators or the person who's

play14:01

like going through the ticket doesn't

play14:03

need to know anything about any of this

play14:05

drama that's happening down there in the

play14:07

computer memory because the programmer

play14:09

the programmer who understands data

play14:10

structures has been able to program it

play14:13

is in an intelligent way from the

play14:15

airline operator's perspective all this

play14:17

is just happening like magic when they

play14:19

add a new ticket into the pool of ticket

play14:22

holders the list is automatically

play14:23

organized in the exact priority that

play14:25

they want and that is again the magic of

play14:28

data structures and this whole principle

play14:30

is also something that we often refer to

play14:32

as abstraction the most beautiful thing

play14:34

about computers and computer science is

play14:36

that there's like a million different

play14:38

levels of abstraction where at the very

play14:40

low level you just have zeros and ones

play14:42

inside the computers or even lower these

play14:44

teran sisters where electricity is going

play14:46

through these logic gates but you don't

play14:48

need to know about any of these because

play14:49

there are low level programmers who have

play14:51

designed these higher level programming

play14:53

languages that allow us to do stuff with

play14:55

the low level computer without

play14:57

understanding all the drama that's

play14:58

happening down below and the same thing

play15:00

here when as a programmer as a

play15:02

high-level program and your most

play15:03

important task is to understand the

play15:05

language and to understand programming

play15:07

concepts like data structures in such a

play15:09

way that you can design programs so that

play15:11

the people who use these programs don't

play15:13

need to know anything about how they

play15:15

work thinking just use them you just

play15:16

tell them click this button or run this

play15:19

function and it will do exactly what

play15:21

they want and in reality the

play15:22

relationships with pieces of data and

play15:24

the things we want to do are even more

play15:26

complicated than this where for example

play15:28

if you're organizing web page like the

play15:30

way google actually organizes their web

play15:32

page they have these like very deep

play15:33

complicated relationships with like all

play15:35

the different web pages so they need

play15:38

structures to deal with it again for the

play15:41

purposes that they need the data for so

play15:43

at the end of the day the reason why

play15:45

companies care about all of this the

play15:46

reason why you need to know all of this

play15:48

as a programmer it's like the equivalent

play15:50

of someone who organizes their room like

play15:52

a complete mess no one wants to hire

play15:54

someone who doesn't know how to organize

play15:56

their work effectively and to do stuff

play15:59

in an efficient way and so this is the

play16:01

analogy of the programmer who just does

play16:03

stuff in a way that maybe works but it's

play16:06

not the most efficient way to do it and

play16:08

for companies especially these large

play16:10

enterprises where all these details

play16:11

really matter because they're dealing

play16:12

with like billions of pieces of data

play16:14

they want to hire programmers who can

play16:16

organize their code effectively and that

play16:18

is really what data structures are all

play16:20

about if you want to actually now learn

play16:23

these details obviously this video is

play16:24

not enough first of all i would

play16:25

recommend subscribing to this channel

play16:27

because again if enough of you like this

play16:29

video i want to make a similar video

play16:31

about the other side of these virtual

play16:33

algorithms which is algorithms but

play16:34

really to learn all of this is not easy

play16:37

and to learn it effectively you need a

play16:39

good step-by-step plan and a path to

play16:41

make sure that you're learning

play16:42

everything that you need to know in the

play16:44

most efficient way if possible and for

play16:46

that i can be for you i mean this video

play16:48

where i talk about exactly that i

play16:49

describe exactly an exact step-by-step

play16:52

plan that you can take from a high level

play16:54

overview into all the theoretical

play16:56

details if you want to master all these

play16:57

topics and learn to pass coding

play16:59

interviews you should absolutely watch

play17:01

this video right here

Rate This

5.0 / 5 (0 votes)

Related Tags
Structures de donnéesAlgorithmiqueProgrammationÉfficacitéDéveloppeursConnaissance fondamentaleCompétences professionnellesOrganisation de donnéesAbstractionOptimisationExplication simplifiée
Do you need a summary in English?