Resolução de Problemas com Algoritmos e Estruturas de Dados usando Python¶
Versão original em inglês por Brad Miller e David Ranum, Luther College.
Traduzido por Andrew Toshiaki Nakayama Kurauchi, Carlos Eduardo Leão Elmadjian, Carlos Hitoshi Morimoto e José Coelho de Pina, IME-USP.
- 1. Introdução
- 1.1. Objetivos
- 1.2. Introdução
- 1.3. O que é Ciência da Computação?
- 1.4. O que é Programação?
- 1.5. Por Que Estudar Estruturas de Dados e Tipos de Dados Abstratos?
- 1.6. Por Que Estudar Algoritmos?
- 1.7. Revisão de Python Básico
- 1.8. Primeiros Passos com Dados
- 1.9. Entrada e Saída
- 1.10. Estruturas de Controle
- 1.11. Tratamento de Exceções
- 1.12. Definindo Funções
- 1.13. Programação Orientada a Objetos em Python: Definindo Classes
- 1.14. Resumo
- 1.15. Termos Chave
- 1.16. Questões de Discussão
- 1.17. Exercícios de Programação
- 2. Análise
- 3. Estruturas de Dados Básicas
- 3.1. Objetivos
- 3.2. O que são estruturas lineares?
- 3.3. O que é uma Pilha?
- 3.4. O Tipo Abstrato de Dados Pilha
- 3.5. Implementando uma Pilha em Python
- 3.6. Parênteses Balanceados
- 3.7. Símbolos Balanceados
- 3.8. Conversão de Decimal para Binário
- 3.9. Expressões Infixas, Prefixas and Posfixas
- 3.10. O que é uma Fila?
- 3.11. O Tipo Abstrato de Dados Fila
- 3.12. Implementando uma Fila em Python
- 3.13. Simulação: Batata Quente
- 3.14. Simulação: Tarefas de Impressão
- 3.15. O que é uma Deque?
- 3.16. O Tipo Abstrato de Dados Deque
- 3.17. Implementação de uma Deque in Python
- 3.18. Verificado de Palíndromos
- 3.19. Listas
- 3.20. Tipo Abstrato de Dados Lista desordenada
- 3.21. Implementando uma Lista Desordenada: Listas Ligadas
- 3.22. O Tipo Abstrado de Dados Lista Ordenada
- 3.23. Implementando uma Lista Ordenada
- 3.24. Resumo
- 3.25. Termos Chaves
- 3.26. Questões de Discussão
- 3.27. Programming Exercises
- 4. Recursão
- 4.1. Objetivos
- 4.2. O que é recursão?
- 4.3. Calculando a Soma de Uma Lista de Números
- 4.4. As Três Leis da Recursão
- 4.5. Convertendo um Inteiro para String em Qualquer Base
- 4.6. Blocos de Pilha: Implementando Recursão
- 4.7. Introdução: Visualizando Recursão
- 4.8. Triângulo de Sierpinski
- 4.9. Problemas Recursivos Complexos
- 4.10. Torre de Hanoi
- 4.11. Explorando um Labirinto
- 4.12. Programação Dinâmica
- 4.13. Resumo
- 4.14. Termos Chave
- 4.15. Questões para Discussão
- 4.16. Glossário
- 4.17. Exercícios de Programação
- 5. Ordenação e Busca
- 5.1. Objetivos
- 5.2. Busca
- 5.3. A Busca Sequencial
- 5.4. A Busca Binária
- 5.5. Hashing
- 5.6. Ordenação
- 5.7. O Bubble Sort
- 5.8. A Ordenação Por Seleção
- 5.9. A Ordenação Por Inserção
- 5.10. O Shell Sort
- 5.11. O Merge Sort
- 5.12. O Quick Sort
- 5.13. Sumário
- 5.14. Termos-Chave
- 5.15. Discussion Questions
- 5.16. Exercícios de programação
- 6. Árvores e Algoritmos para Árvores
- 7. Graphs and Graph Algorithms
- 7.1. Objectives
- 7.2. Vocabulary and Definitions
- 7.3. The Graph Abstract Data Type
- 7.4. An Adjacency Matrix
- 7.5. An Adjacency List
- 7.6. Implementation
- 7.7. The Word Ladder Problem
- 7.8. Building the Word Ladder Graph
- 7.9. Implementing Breadth First Search
- 7.10. Breadth First Search Analysis
- 7.11. The Knight’s Tour Problem
- 7.12. Building the Knight’s Tour Graph
- 7.13. Implementing Knight’s Tour
- 7.14. Knight’s Tour Analysis
- 7.15. General Depth First Search
- 7.16. Depth First Search Analysis
- 7.17. Topological Sorting
- 7.18. Strongly Connected Components
- 7.19. Shortest Path Problems
- 7.20. Dijkstra’s Algorithm
- 7.21. Analysis of Dijkstra’s Algorithm
- 7.22. Prim’s Spanning Tree Algorithm
- 7.23. Summary
- 7.24. Key Terms
- 7.25. Discussion Questions
- 7.26. Programming Exercises
Agradecimentos¶
Nós estamos muito agradecidos à Franklin Beedle Publishers por nos permitir colocar esse livro interativo a disposição de todos de forma gratuita. Essa versão online é dedicada à memória de nosso primeiro editor, Jim Leisy, que deseja que nós “mudássemos o mundo”.
Índices e tabelas¶
``Resolução de Problemas com Algoritmos e Estruturas de Dados usando Python`` por Bradley N. Miller e David L. Ranum, está sob a licença Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.