Estruturas de Dados e Algoritmos com Python
Armazene, manipule e acesse dados de forma eficaz e melhore o desempenho de suas aplicações
Descrição do livro
Selecionar a estrutura de dados certa é essencial para a otimização do desempenho e da escalabilidade das aplicações. Esta nova edição de Estruturas de Dados e Algoritmos com Python ampliará seu conhecimento sobre estruturas de dados, incluindo as pilhas, filas e listas, e também mostrará como aplicar heaps e filas de prioridade em aplicações. Você aprenderá a analisar e comparar algoritmos e saberá quais devem ser usados para um problema de acordo com o tempo de execução e a complexidade computacional. Você também terá mais segurança ao organizar seu código de maneira gerenciável, consistente e escalável, o que aumentará sua produtividade como desenvolvedor Python.
Após terminar de ler este livro sobre Python, você conseguirá manipular as estruturas de dados e os algoritmos mais importantes para armazenar, organizar e acessar dados com mais eficiência em suas aplicações.
O que você aprenderá:
• Conhecerá estruturas de dados e algoritmos comuns usando exemplos, diagramas e exercícios
• Examinará como estruturas mais complexas, como as filas de prioridade e os heaps, podem beneficiar seu código
• Implementará algoritmos de busca, ordenação e seleção em sequências de números e strings
• Conhecerá paradigmas algorítmicos e aplicará técnicas de programação dinâmica
• Usará a notação assintótica para analisar o desempenho de algoritmos no que diz respeito às complexidades de tempo e espaço
• Escreverá código poderoso e robusto usando os recursos mais recentes do Python
• Terá segurança ao usar algoritmos de comparação de chaves de tipo string
Ver menos ▲Sumário
Sumário
- Sobre o autor
- Sobre os revisores
- Prefácio
- Capítulo 1 ■ Tipos e estruturas de dados em Python
- Introdução ao Python 3.10
- Instalação do Python
- Sistema operacional Windows
- Sistemas operacionais baseados no Linux
- Sistema operacional Mac
- Definição de um ambiente de desenvolvimento Python
- Definição na linha de comando
- Definição no Jupyter Notebook
- Visão geral dos tipos de dados e objetos
- Tipos de dados básicos
- Numérico
- Booleano
- Sequências
- Operações de associação, de identidade e lógicas
- Tuplas
- Tipos de dados complexos
- Dicionários
- Conjuntos
- Módulo collections do Python
- Tuplas nomeadas
- Deque
- Dicionários ordenados
- Dicionário padrão
- Objeto ChainMap
- Objetos counter
- UserDict
- UserList
- UserString
- Resumo
- Capítulo 2 ■ Introdução ao design de algoritmos
- Introdução aos algoritmos
- Análise do desempenho de um algoritmo
- Complexidade de tempo
- Complexidade de espaço
- Notação assintótica
- Notação theta
- Notação Big O
- Notação Ômega
- Análise amortizada
- Composição de classes de complexidade
- Cálculo da complexidade de tempo de execução de um algoritmo
- Resumo
- Exercícios
- Capítulo 3 ■ Técnicas e estratégias do design de algoritmos
- Técnicas de design de algoritmos
- Recursão
- Divisão e conquista
- Busca binária
- Ordenação por mesclagem
- Programação dinâmica
- Cálculo da série de Fibonacci
- Algoritmos gananciosos
- Problema do caminho mais curto
- Resumo
- Exercícios
- Capítulo 4 ■ Listas encadeadas
- Arrays
- Introdução às listas encadeadas
- Nós e ponteiros
- Listas simplesmente encadeadas
- Criando e percorrendo
- Inserção de itens
- Consulta em uma lista
- Exclusão de itens
- Listas duplamente encadeadas
- Criando e percorrendo
- Acréscimo de itens
- Consulta em uma lista
- Exclusão de itens
- Listas circulares
- Criando e percorrendo
- Acréscimo de itens
- Consulta em uma lista
- Exclusão de um elemento de uma lista circular
- Aplicações práticas das listas encadeadas
- Resumo
- Exercício
- Capítulo 5 ■ Pilhas (stacks) e filas (queues)
- Pilhas (stacks)
- Implementação da pilha com o uso de arrays
- Implementação da pilha com o uso de listas encadeadas
- Operação push
- Operação pop
- Operação peek
- Aplicações das pilhas (stacks)
- Filas (queues)
- Filas baseadas em listas do Python
- Filas baseadas em listas encadeadas
- Filas (queues) baseadas em pilhas (stacks)
- Aplicações das filas
- Resumo
- Exercícios
- Capítulo 6 ■ Árvores
- Terminologia
- Árvores binárias
- Implementação dos nós da árvore
- Varredura da árvore
- Árvores de expressão
- Árvores binárias de busca
- Operações da árvore binária de busca
- Busca dos nós mínimo e máximo
- Benefícios de uma árvore binária de busca
- Resumo
- Exercícios
- Capítulo 7 ■ Heaps e filas de prioridade
- Heaps
- Operação de inserção
- Operação de exclusão
- Exclusão de um elemento em um local específico de um heap
- Heapsort
- Filas de prioridade
- Resumo
- Exercícios
- Capítulo 8 ■ Tabelas hash
- Introdução às tabelas hash
- Funções hash
- Funções hash perfeitas
- Resolução de colisões
- Endereçamento aberto
- Implementação de tabelas hash
- Armazenamento de elementos em uma tabela hash
- Aumento de uma tabela hash
- Recuperação de elementos na tabela hash
- Teste da tabela hash
- Implementação de uma tabela hash como um dicionário
- Encadeamento separado
- Tabelas de símbolos
- Resumo
- Exercício
- Capítulo 9 ■ Grafos e algoritmos
- Grafos
- Grafos direcionados e não direcionados
- Grafos direcionados acíclicos
- Grafos ponderados
- Grafos bipartidos
- Representações dos grafos
- Listas de adjacências
- Matriz de adjacências
- Varreduras de grafos
- Busca em largura
- Busca em profundidade
- Outros métodos úteis dos grafos
- Árvore de extensão mínima
- Algoritmo de árvore de extensão mínima de Kruskal
- Algoritmo de árvore de extensão mínima de Prim
- Resumo
- Exercícios
- Capítulo 10 ■ Busca
- Introdução à busca
- Busca linear
- Busca linear não ordenada
- Busca linear ordenada
- Busca por saltos
- Busca binária
- Busca por interpolação
- Busca exponencial
- Seleção de um algoritmo de busca
- Resumo
- Exercício
- Capítulo 11 ■ Ordenação
- Requisitos técnicos
- Algoritmos de ordenação
- Algoritmos de ordenação por bolha
- Algoritmo de ordenação por inserção
- Algoritmo de ordenação por seleção
- Algoritmo quicksort
- Implementação do quicksort
- Algoritmo Timsort
- Resumo
- Exercício
- Capítulo 12 ■ Algoritmos de seleção
- Requisitos técnicos
- Seleção por ordenação
- Seleção randomizada
- Quickselect
- Seleção determinística
- Implementação do algoritmo de seleção determinística
- Resumo
- Exercícios
- Capítulo 13 ■ Algoritmos de busca de strings
- Requisitos técnicos
- Notações e conceitos relacionados às strings
- Algoritmos de busca de padrões
- Algoritmo de força bruta
- Algoritmo de Rabin-Karp
- Implementação do algoritmo de Rabin-Karp
- Algoritmo Knuth-Morris-Pratt
- Função prefix
- Entenda o algoritmo KMP
- Implementação do algoritmo KMP
- Algoritmo de Boyer-Moore
- Entenda o algoritmo de Boyer-Moore
- Resumo
- Exercícios
- Apêndice ■ Respostas dos exercícios
- Capítulo 2: Introdução ao design de algoritmos
- Capítulo 3: Técnicas e estratégias do design de algoritmos
- Capítulo 4: Listas encadeadas
- Capítulo 5: Pilhas e filas
- Capítulo 6: Árvores
- Capítulo 7: Heaps e filas de prioridade
- Capítulo 8: Tabelas hash
- Capítulo 9: Grafos e algoritmos
- Capítulo 10: Busca
- Capítulo 11: Ordenação
- Capítulo 12: Algoritmos de seleção
- Capítulo 13: Algoritmos de busca de strings
- Índice remissivo
Sobre o autor
O Dr. Basant Agarwal trabalha como professor assistente no Departamento de Ciência da Computação do IIIT-Kota (Indian Institute of Information Technology Kota, Instituto Indiano de Tecnologia da Informação de Kota) na Índia, o qual é um Instituto de Importância Nacional. Ele obteve os diplomas de Doutor e de Mestre em Tecnologia no Departamento… Ver perfil completo ▶
Livros relacionados
Recursos
Opinião dos leitores
José O
Conteúdo atual, bem estruturado e exemplos claros. Ainda é possível, ter acesso ao e-book em inglês enviando a nota fiscal informado. Os exercícios também são ótimos. Gostei muito.
Claudio A
Livro indispensável para profissionais que desejam elaborar soluções robustas.






