Projeto_Hashing

📊 Tabela Hash com Encadeamento e Ordenação – Projeto Final de ED I

📌 Disciplina

👨‍🎓 Aluno


📘 Sobre o Projeto

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.


🎯 Objetivos


🧠 Metodologia

🔢 1. Função Hash

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.

🔁 2. Tratamento de Colisões

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.

📊 3. Análise do Hash Uniforme

Histograma

O histograma mostra a quantidade de nomes armazenados em cada uma das 53 chaves.

🔃 4. Ordenação com QuickSort

Cada lista encadeada é ordenada individualmente utilizando o algoritmo QuickSort, adaptado para ponteiros em listas duplas. Isso facilita buscas e visualização posteriores.

QuickSort


⚙️ Funcionalidades do Sistema


🧩 Estrutura do Código

.
├── 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.”