-
-
Save reginadiana/f6d7709bc2c73d886d3e3f0a310dac23 to your computer and use it in GitHub Desktop.
As diversas formas em que os dados são organizados e agregados é chamado de estrutura de dados
- Inserir ou excluir elementos e;
- Buscar e localizá-los;
- Ordenar/classifica-los de acodo com determinada ordem
- Podem ser lineares (arrays) ou não lineares (grafos)
- Homogenea (toda estrutura possui o mesmo tipo) ou heterogenea (com tipos diferentes)
- Estáticos (possuem tamanho/capacidade de memória fixa) ou dinamica (podem expandir)
Normalmente trabalhamos com apenas um tipo de dado, embora linguagens como o javascript permitam a mistura de vários tipos em um unico array.
🎲 Na maior parte das linguagens, os arrays tem tamanho fixo
🎲 Todos os elementos ocupam espaço sequencial na memória
🎲 Inserir ou remover elementos do meio do array não é tão simples
🎲 Arrays são muito eficientes para acessar dados
🎲 Arrays não são muito eficientes quando falamos de memória, pois ao declararmos um com tamanho de 10 indexs por exemplo, por mais que preenchamos apenas 2 deles, o restante dos indexes ficarão reservados para que no futuro sejam preenchidos, por mais que isso possa não acontecer. Portanto, o ideal é utilizar os arrays quando sabemos a quantidade de dados que queremos guardar.
🎲 Adicionar e remover um elemento no final do array ao invés do inicio ou meio é menos custoso
Podemos fazer uma associação com uma pilha de pratos ou livros. Se quisermos adicionar ou remover algum item, precisamos fazer isso de cima pra baixo, o que corresponde do final para o inicio quando falamos de dados. Essa estrutura é utilizada, por exemplo, na navegação do browser.
Tem semelhança com a pilha, porém podemos remover o tem do inicio da filha e adicionar ao final. Podemos pensar em uma fila de cinema, onde quem chegou primeiro, sai primeiro da fila, mas quem chega por ultimo, sai por ultimo dela.
É uma junção das estruturas pilha e fila, que aceita inserção e remoção de elementos tanto no inicio como no final.
Busca resolver uma limitação da fila linear, que é lidar com espaços vazios que podem se enfileirar após a retirada de elementos no inicio da fila.
Utiliza ponteiros para "apontar" para o endereço de memoria mais próximo, sem que ele precise estar lá. Essa estrutura é bastante utilizada em alguns de fotos e playlists de musicas ou videos.
São listas não ordenadas de elementos que não podem se repetir. no javascript, podemos instancia essa estrutura com new Set()
É uma estrutura que guarda dados pares de chave e valor. Podem ter performance melhor em buscas e manipulação de dados do que objetos, pois utilizam referencias para as chaves de forma similar aos ponteiros.
É uma estrutura não sequencial, muito util para armazenar dados de forma hierarquica e que podem ser acessados de forma rápida, levando a uma maior eficiencia na manipulação de dados.
É um tipo especial de árvore binária, normalmente utilizada em computação para implementar filas de prioridade, indexação de banco de dados e em algoritimo de ordenação heap sort.
É uma estrutura não sequencial que forma uma rede que interliga todos os dados, sendo utilizada pelas consultas do GraphQL, sistemas de navegação (gsp/mapas) e algoritmo de caminho minimo para rotas.
É uma forma de representar uma sequencia de bits, como um array por exemplo, sem precisar armazenar na memoria, sendo muito util em desenvovimento com grande massa de dados.
-
Um dos erros mais comuns é declarar um método que retorna mais ou menos do que ele promete.
-
A maneira com que escrevemos o código também pode gerar sobrecarga cognitiva
-
Se uma variável contém uma data, termine-a com _on, mas se tiver uma data com hora, termine-a com _at
-
Tome cuidado com code smells, pois eles podem dificultar a leitura do código.