Umaestrutura de dados uma maneira particular de organizar dados em um computador com o intuito de usar os recursos de modo eficaz. As estruturas de dados e os algoritmos so a base de todas as solues para qualquer problema de programao. Com este livro, voc aprender a escrever cdigos complexos e eficazes usando os recursos mais recentes da ES 2017.
Prximo ao final do livro, voc descobrir como todas as teorias apresentadas podem ser aplicadas para solucionar problemas do mundo real, trabalhando com as prprias redes de computador e com pesquisas no Facebook.
A estrutura de dados em JavaScript refere-se forma como os dados so organizados e armazenados na memria do computador. Existem vrias estruturas de dados disponveis em JavaScript, como arrays, objetos, listas ligadas, pilhas, filas, entre outros. Cada estrutura de dados tem suas caractersticas e mtodos especficos para manipulao e acesso aos dados.
Por outro lado, os algoritmos em JavaScript so sequncias de passos lgicos que resolvem problemas especficos. Eles so usados para manipular e processar os dados armazenados nas estruturas de dados. Os algoritmos podem ser simples ou complexos, dependendo da natureza do problema a ser resolvido. Alguns exemplos de algoritmos comuns em JavaScript incluem ordenao, busca, recurso, entre outros.
Aprender a estrutura de dados e algoritmos em JavaScript pode parecer intimidante no incio, mas com a abordagem correta, um processo acessvel e gratificante. Aqui esto algumas dicas prticas para comear:
Desvendar a estrutura de dados e algoritmos em JavaScript essencial para qualquer desenvolvedor que queira criar aplicaes eficientes e escalveis. A compreenso desses conceitos permite otimizar o desempenho do cdigo, resolver problemas de forma eficiente e criar solues reutilizveis. Com dedicao e prtica, possvel dominar a estrutura de dados e algoritmos em JavaScript e elevar suas habilidades de programao a um novo nvel.
Aqui voc encontra cursos com aulas ao vivo, mentorias individuais com os melhores profissionais do mercado e suporte de carreira personalizado para dar seu prximo passo profissional e aprender habilidades como Data Science, Data Analytics, Machine Learning e mais.
J pensou em aprender de maneira individualizada com profissionais que atuam em empresas como Nubank, Amazon e Google? Clique aqui para se inscrever na Awari e comear a construir agora mesmo o prximo captulo da sua carreira em dados.
As estruturas de dados primitivas vm por padro com a linguagem de programao e voc pode implement-las imediatamente (como arrays e objetos). Estruturas de dados no primitivas, no vm por padro e voc deve codific-las se quiser us-las.
Existem diferentes estruturas de dados, porque algumas delas so mais adequadas para certos tipos de operaes. Voc provavelmente ser capaz de lidar com a maioria das tarefas de programao com estrutura de dados incorporadas, mas para algumas tarefas muito especficas, uma estrutura de dados no primitiva pode ser til.
Em algumas linguagens de programao, o usurio s pode armazenar valores do mesmo tipo em um array e o comprimento do array deve ser definido no momento de sua criao e no pode ser modificado posteriormente.
Em JavaScript, os arrays vm com muitas propriedades e mtodos integrados que podemos usar com diferentes finalidades, como adicionar ou excluir itens do array, classific-lo, filtrar seus valores, saber seu comprimento e assim por diante.
Como mencionei, em arrays, cada elemento possui um ndice definido por sua posio no array. Quando adicionamos um novo item no final do array, ele pega apenas o nmero do ndice que segue o ltimo item anterior do array.
Mas quando adicionamos/exclimos um novo item no incio ou no meio do array, os ndices de todos os elementos que vm aps o elemento adicionado/excludo, devem ser alterados. claro que isso tem um custo computacional e um dos pontos fracos dessa estrutura de dados.
Arrays so teis quando temos que armazenar valores individuais e adicionar/excluir valores do final da estrutura de dados. Mas quando precisamos adicionar/excluir qualquer parte dele, existem outras estruturas de dados que funcionam com mais eficincia (falaremos sobre elas mais adiante).
Os objetos so uma boa maneira de agrupar dados que tm algo em comum ou esto de alguma forma relacionados. Alm disso, graas ao fato de que os nomes das propriedades so nicos, os objetos so teis quando temos que separar os dados com base em uma condio nica.
Pilhas so estruturas de dados que armazenam informaes na forma de uma lista. Eles permitem apenas adicionar e remover elementos sob um padro LIFO (ltimo a entrar, primeiro a sair) . Nas pilhas, os elementos no podem ser adicionados ou removidos fora de ordem, eles sempre devem seguir o padro LIFO.
Para entender como isso funciona, imagine uma pilha de papis em cima de sua mesa. Voc s pode adicionar mais papis pilha colocando-os em cima de todos os outros. E voc pode tirar um papel da pilha apenas pegando aquele que est em cima de todos os outros. Ultimo a entrar primeiro a sair. LIFO. ?
H mais de uma maneira de implementar uma pilha, mas provavelmente a mais simples usar um array com seus mtodos push e pop . Se usarmos apenas pop e push para adicionar e excluir elementos, sempre seguiremos o padro LIFO e operaremos sobre ele como uma pilha.
As filas funcionam de maneira muito semelhante s pilhas, mas os elementos seguem um padro diferente para adio e remoo. As filas permitem apenas um padro FIFO (primeiro a entrar, primeiro a sair) . Nas filas, os elementos no podem ser adicionados ou removidos fora de ordem, eles sempre devem seguir o padro FIFO.
Para entender isso, imagine pessoas fazendo fila para comprar comida. A lgica aqui que, se voc pegar a fila primeiro, ser o primeiro a ser atendido. Se voc chegar l primeiro, ser o primeiro a sair. FIFO.?
As listas encadeadas so um tipo de estrutura de dados que armazena valores na forma de uma lista . Dentro da lista, cada valor considerado um n , e cada n conectado com o seguinte valor na lista (ou nulo caso o elemento seja o ltimo da lista) por meio de um ponteiro .
Existem dois tipos de listas encadeadas, listas encadeadas individualmente e listas encadeadas duplamente. Ambos funcionam de maneira muito semelhante, mas a diferena est nas listas vinculadas individualmente, cada n possui um nico ponteiro que indica o prximo n na lista. Enquanto em listas duplamente encadeadas, cada n possui dois ponteiros , um apontando para o prximo n e outro apontando para o n anterior .
Conforme mencionado, a diferena entre listas duplamente vinculadas e listas simples que as listas duplamente vinculadas tm seus ns conectados por meio de ponteiros com o valor anterior e o prximo. Por outro lado, as listas vinculadas individualmente conectam apenas seus ns com o prximo valor.
Essa abordagem de ponteiro duplo permite que listas duplamente vinculadas tenham um desempenho melhor com certos mtodos em comparao com listas vinculadas individualmente, mas ao custo de consumir mais memria (com listas duplamente vinculadas, precisamos armazenar dois ponteiros em vez de um).
As rvores so formadas por um n raiz (o primeiro n da rvore), e todos os ns que saem dessa raiz so chamados de filhos . Os ns na parte inferior da rvore, que no tm "descendentes", so chamados de ns de folha . E a altura da rvore determinada pelo nmero de conexes pai/filho que ela possui.
Ao contrrio das listas encadeadas ou arrays, as rvores no so lineares , no sentido de que, ao iterar a rvore, o fluxo do programa pode seguir direes diferentes dentro da estrutura de dados e, portanto, chegar a valores diferentes.
Um requisito importante para a formao da rvore que a nica conexo vlida entre os ns seja do pai para o filho . Conexes entre irmos ou de filho para pai no so permitidas em rvores (esses tipos de conexes formam grafos, um tipo diferente de estrutura de dados). Outro requisito importante que as rvores tenham apenas uma raiz .
No BST, os valores so ordenados de forma que cada n que desce para o lado esquerdo de seu pai deve ter um valor menor que seu pai, e cada n que desce para o lado direito de seu pai deve ter um valor maior que seu pai.
Essa ordem em seus valores torna essa estrutura de dados tima para busca, pois em cada nvel da rvore podemos identificar se o valor que est sendo procurado maior ou menor que o n pai, e a partir dessa comparao descartamos progressivamente cerca de metade dos dados at chegamos ao nosso valor.
Heaps so outro tipo de rvore que possui algumas regras especficas. Existem dois tipos principais de heaps, MaxHeaps e MinHeaps . Em MaxHeaps, os ns pais so sempre maiores que seus filhos, e em MinHeaps, os ns pais so sempre menores que seus filhos.
Alm disso, os heaps so os mais compactos possveis, o que significa que cada nvel contm todos os ns que pode conter sem espaos vazios, e os novos filhos so colocados primeiro nos espaos esquerda da rvore.
Grafos so uma estrutura de dados formada por um grupo de ns e certas conexes entre esses ns. Ao contrrio das rvores, os grafos no possuem ns raiz e folha, nem uma "cabea" ou uma "cauda". Ns diferentes esto conectados entre si e no h nenhuma conexo pai-filho implcita entre eles.
Se pegarmos a imagem de exemplo a seguir, voc pode ver que no h direo na conexo entre o n 2 e o n 3. A conexo ocorre nos dois sentidos, o que significa que voc pode percorrer a estrutura de dados do n 2 para o n 3 e do n 3 para n 2. No direcionado significa que as conexes entre os ns podem ser usadas nos dois sentidos.
Dizemos que um grafo ponderado se as conexes entre os ns tiverem um peso atribudo. Nesse caso, peso significa apenas um valor atribudo a uma conexo especfica. So informaes sobre a conexo em si, no sobre os ns.
Para entender o uso de grafos ponderados, imagine se voc quisesse representar um mapa com vrios locais diferentes e fornecer ao usurio informaes sobre quanto tempo ele pode levar para ir de um lugar a outro.
Um grfico ponderado seria perfeito para isso, pois voc poderia usar cada n para salvar informaes sobre o local, as conexes poderiam representar as estradas disponveis entre cada local e os pesos representariam a distncia fsica de um local a outro.
3a8082e126