Algoritmos e Estruturas de Dados
Análise de complexidade, ordenação, listas, árvores, dispersão, heaps e grafos em C++.
Algoritmos e Estruturas de Dados é a cadeira onde aprendes a escolher: perante um problema, que estrutura guarda os dados e que algoritmo os transforma, e quanto custa essa escolha quando a entrada cresce. Vens de Programação, onde o C++ e as classes já são familiares, e de Funções, onde viste a primeira análise de custos. Aqui essas ideias tornam-se método: tipos abstratos de dados implementados por ti, complexidade provada e programas avaliados automaticamente no Mooshak.
Como está organizado
Começa por Complexidade e invariantes, que fixa a notação assintótica para tempo e espaço e mostra como provar que um ciclo faz o que promete. Depois, Pesquisa e ordenação em arrays compara a pesquisa sequencial com a binária e segue o quicksort e o mergesort passo a passo no mesmo vetor.
A segunda parte constrói estruturas: Listas, pilhas e filas com nós e apontadores, Árvores binárias com as três travessias, e Árvores de pesquisa equilibradas onde as rotações mantêm a altura logarítmica. A terceira parte organiza o acesso por chave e por prioridade: Tabelas de dispersão com colisões resolvidas à vista, e Filas de prioridade e heaps com o heapsort. Fecha com Grafos e pesquisa, onde a pesquisa em largura e em profundidade decide ciclos, conetividade e ordens topológicas.
Como estudar
Lê cada página com o compilador aberto e implementa a estrutura antes de veres a solução: lista ligada, árvore de pesquisa, tabela de dispersão e heap cabem todos em programas curtos. Em AED, perceber o desenho não chega; o hábito que conta pontos é seguir o estado dos dados à mão, com papel, numa entrada pequena, e só depois confirmar com o programa. Resolve a seguir os exercícios de cada ficha e submete no Mooshak, porque o avaliador automático testa entradas que tu não lembraste, incluindo a vazia e a de um só elemento.
Avaliação
A forma de avaliação varia de ano para ano. Consulta a ficha da unidade curricular no SIGARRA e a página da disciplina no Moodle para saberes os pesos dos testes, do trabalho laboratorial e do exame, e as regras de frequência e de melhoria.
Fontes e âmbito
Estas páginas seguem o âmbito da unidade curricular de Algoritmos e Estruturas de Dados (L.EIC011) do 2.º ano, 1.º semestre da LEIC, ocorrência de 2025/26: complexidade temporal e espacial, correção de algoritmos, pesquisa e ordenação em arrays, listas, pilhas e filas, árvores binárias e equilibradas, tabelas de dispersão, filas de prioridade e heaps, e algoritmos básicos em grafos. As ferramentas de trabalho são o compilador GCC com C++17 e o Mooshak para avaliação automática.
Material oficial da FEUP:
- Ficha da unidade curricular de Algoritmos e Estruturas de Dados, ocorrência de 2025/26, com objetivos, programa, bibliografia e avaliação (consultada em setembro de 2026): SIGARRA.