Estruturas de Dados e Algoritmos com Python

Armazene, manipule e acesse dados de forma eficaz e melhore o desempenho de suas aplicações

Estruturas de Dados e Algoritmos com Python
× Estruturas de Dados e Algoritmos com Python

Estruturas de Dados e Algoritmos com Python

Autor:

ISBN impresso: 978-85-7522-850-0
ISBN ebook: 978-85-7522-851-7
Ano: 2023
Páginas: 464
Preço impresso: R$ 116,00 O ebook deste livro está disponível na Amazon.

2 opiniões | Opine sobre este livro

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
Ver sumário completo ▼

Sobre o autor

Basant Agarwal

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 ▶

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.

Ver todas ▼

Títulos relacionados