Capítulo 1: Introdução
Capítulo 2: Paradigmas de Projeto de Algoritmos
Capítulo 3: Estruturas de Dados Básicas
Capítulo 4: Ordenação
Capítulo 5: Pesquisa em Memória Primária
Capítulo 6: Pesquisa em Memória Secundária
Capítulo 7: Algoritmos em Grafos
Capítulo 8: Processamento de Cadeias de Caracteres
Capítulo 9: Problemas NP-Completo e Heuristicas
Capítulo 1: Introdução
Algoritmos, Estrutura de Dados e Programas
Tipos de Dados e Tipos Abstratos de Dados
Medida do Tempo de Execução de um Programa
Comportamento Assintótico de Funções
Classes de Comportamento Assintótico
Técnicas de Análise de Algoritmos
Pascal
Notas Bibliograficas
Exercícios
Capítulo 2: Paradigmas de Projeto de Algoritmos
Indução
Recursividade
Como Implementar Recursividade
Quando Não Usar Recursividade
Algoritmos Tentativa e Erro
Divisão e Conquista
Balanceamento
Programação Dinâmica
Algoritmos Gulosos
Algoritmos Aproximados
Notas Bibliograficas
Exercícios
Capítulo 3: Estruturas de Dados Básicas
Listas Lineares
Implementação de Listas por meio de Arranjos
Implementação de Listas por meio de Apontadores
Pilhas
Implementação de Pilhas por meio de Arranjos
Implementação de Pilhas por meio de Apontadores
Filas
Implementação de Filas por meio de Arranjos
Implementação de Filas por meio de Apontadores
Notas Bibliograficas
Exercícios
Capítulo 4: Ordenação
Ordenação Interna
Ordenação por Seleção
Ordenação por Inserção
Shellsort
Quicksort
Heapsort
Comparação entre os Métodos
Ordenação Parcial
Ordenação Externa
Intercalação Balanceada de Vários Caminhos
Implementação por meio de Seleção por Substituição
Considerações Práticas
Intercalação Polifásica
Quicksort Externo
Notas Bibliograficas
Exercícios
Capítulo 5: Pesquisa em Memória Primária
Pesquisa Sequencial
Pesquisa Binária
Árvores de Pesquisa
Árvores Binárias de Pesquisa sem Balanceamento
Árvores Binárias de Pesquisa com Balanceamento
Pesquisa Digital
Trie
Patricia
Transformação de Chave (Hashing)
Funções de Transformação
Listas Encadeadas
Endereçamento Aberto
Hashing Perfeito
Notas Bibliograficas
Exercícios
Capítulo 6: Pesquisa em Memória Secundária
Modelo de Computação para Memória Secundária
Memória Virtual
Implementação de um Sistema de Paginação
Acesso Sequencial Indexado
Discos Óticos de Apenas-Leitura
Árvores de Pesquisa
Árvores B
Árvores B*
Acesso Concorrente em Árvores B*
Considerações Práticas
Notas Bibliograficas
Exercícios
Capítulo 7: Algoritmos em Grafos
Definições Básicas
O Tipo Abstrato de Dados Grafo
Implementação por meio de Matrizes de Adjacência
Implementação por meio de Listas de Adjacência Usando Apontadores
Implementação por meio de Listas de Adjacência Usando Arranjos
Programa Teste Para Três Implementações
Busca em Profundidade
Classificação de Arestas
Teste para Verificar se Grafo é Acíclico
Busca em Largura
Ordenação Topológica
Componentes Fortemente Conectados
Árvore Geradora Mínima
Algorítmo Genérico Para Obter a Árvore Geradora Mínima
Algorítmo de Prim
Algorítmo de Kruskal
Caminhos Mais Curtos
Notas Bibliograficas
Exercícios
Capítulo 8: Processamento de Cadeias de Caracteres
Casamento de Cadeias
Casamento Exato
Casamento Aproximado
Compreessão
Por que Usar Compressão
Compressão de Textos em Linguagem Natural
Codificação de Huffman Usando Bytes
Pesquisa em Texto Comprimido
Notas Bibliograficas
Exercícios
Capítulo 9:
Problemas NP-Completo
Algoritmos Não-Deterministas
As Classes NP-Completo e NP-Difícil
Heurísticas e Algoritmos Aproximados
Algoritmos Exponenciais Usando Tentativa e Erro
Heurísticas para Problemas NP-Completo
Algoritmos Aproximados para Problemas NP-Completo
Notas Bibliograficas
Exercícios