/data-structures-and-algorithms

Getting ready to store and process data.

Primary LanguageJava

data-structures-and-algorithms

Exercício de implementação de estruturas e algoritmos utilizando exclusivamente arrays.

Uma estrutura de dados é utilizada para armazenar e organizar dados, enquanto um algoritmo é uma coleção de etapas para resolver um problema específico. O conhecimento sobre esses tópicos nos ajudam a escrever códigos que rodam mais rápido e requerem menos armazenamento.

Estruturas de dados:

  • Array: Estrutura linear onde os dados são armazenados em espaços contínuos da memória. O acesso a cada elemento é feito através de um índice.
  • Linked List: Existe um elemento raíz e, então, cada elemento está ligado a outro. O tamanho é dinâmico e a lista pode ser "espalhada" pela memória.
  • Stack: Representa uma pilha (como uma pilha de cartas ou de livros), seguindo o algoritmo LIFO (Last-In-First-Out).
  • Queue: Representa uma fila (como a de supermercado), seguindo o algoritmo FIFO (First-In-First-Out).
  • Binary Tree: Muito útil para representar dados hierárquicos. As operações de inserção e busca são muito rápidas.
  • Binary Search Tree: Mantém os elementos em ordem, onde o filho à esquerda deve ser menor que o pai.
  • Hashing: Usa funções hash para determinar a posição de cada elemento.

Algoritmos:

  • Selection Sort: Organiza uma lista encontrando repetidamente o elemento mínimo.
  • Bubble Sort: Ordena uma lista comparando repetidamente um elemento com o seguinte.
  • Merge Sort: Divide o array em duas metades, chama a si mesmo por recursão para estas e, em seguida, mescla as metades organizadas.
  • Quick Sort: Escolhe um elemento e ordena a lista comparando-o repetidamente com os restantes.
  • Tree Sort: Cria uma árvore de pesquisa binária a partir dos elementos da lista e, em seguida, obtém os elementos da árvore ordenados.

Documentação:

https://www.programiz.com/dsa

https://www.mygreatlearning.com/blog/data-structures-using-java
https://www.geeksforgeeks.org/sorting-algorithms