Aula 05 - Análise Assintótica de Complexidade (Notação Big-O) 🧱
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 🧠
- Notação Big-O (Pior Caso): Diretriz central.
- Omega e Theta: Representação em memória.
- Complexidade Temporal: Operação assintótica.
3. Código Exemplo em C 💻
// Comparação: Busca Linear O(n) vs Busca Binária O(log n)
int busca_binaria(const int arr[], int n, int chave) {
int inicio = 0, fim = n - 1;
while (inicio <= fim) {
int meio = inicio + (fim - inicio) / 2; // Previne overflow
4. Atividades da Aula 🚀