Aula 14 - Tabelas Hash: Funções de Espalhamento e Resolução de Colisões 🧱
Estruturas de Dados e Algoritmos
Agenda da Sessão 📅
- Fundamentação Teórica & Problema
- Invariância da Estrutura & Complexidade Big-O
- Alocação Dinâmica na Heap & Ponteiros
- Implementação Prática em Linguagem C
- Análise de Casos de Borda & Debug
1. Visão Geral & Importância 🎯
- Como organizar dados em memória de forma eficiente?
- Diferença de performance entre \(O(1)\), \(O(\log n)\) e \(O(n)\).
- Gestão de memória rigorosa: alocação e desalocação consciente.
2. Princípios Algorítmicos 🧠
- Função Hash: Diretriz central.
- Colisão de Hash: Representação em memória.
- Encadeamento Separado: Operação assintótica.
3. Código Exemplo em C 💻
// Função Hash djb2 para Strings
unsigned long hash_djb2(const unsigned char *str) {
unsigned long hash = 5381;
int c;
while ((c = *str++))
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
4. Atividades da Aula 🚀