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.
- 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.
- 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.
https://www.mygreatlearning.com/blog/data-structures-using-java
https://www.geeksforgeeks.org/sorting-algorithms