Este projeto foi desenvolvido como trabalho final da disciplina, com o objetivo de agrupar, distribuir e organizar eficientemente uma grande massa de dados: uma base de 100.000 nomes brasileiros.
Utilizamos a fórmula: (caractere1 * 1 + caractere2 * 2 + … + caractereN * N) % 53
Ela foi escolhida por promover melhor dispersão dos dados com base nos pesos dos caracteres, se aproximando da hipótese do hash uniforme.
Foi utilizado encadeamento com listas duplamente encadeadas para cada chave. Isso garante que todas as colisões sejam resolvidas de forma eficiente e sem limitação de tamanho.
O histograma mostra a quantidade de nomes armazenados em cada uma das 53 chaves.
Cada lista encadeada é ordenada individualmente utilizando o algoritmo QuickSort, adaptado para ponteiros em listas duplas. Isso facilita buscas e visualização posteriores.
grafico.txt
).
├── main.c
# Código-fonte principal
├── nomes.txt
# Arquivo com os nomes (externo, fornecido)
├── grafico.txt
# Arquivo gerado com a frequência por chave
├── histograma.png
# Imagem da distribuição gerada
├── QuickSort.gif
# Ilustração do método de ordenação
├── Problema Trabalho Final ED.pdf
# Descritivo com regras e objetivos do professor
├── README.md
# Relatório e documentação do projeto
📚 “Organizar bem os dados é o primeiro passo para pensar melhor sobre eles.”