Cargando…

40 algorithms every programmer should know : hone your problem-solving skills by learning different algorithms and their implementation in Python /

Algorithms have always played an important role both in the science and practice of computing. Beyond traditional computing, ability to utilize these algorithms to solve real-world problems is an important skill and is the focus of this book. In order to optimally use these algorithms, a deeper unde...

Descripción completa

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autor principal: Ahmad, Imran (Autor)
Formato: Electrónico eBook
Idioma:Inglés
Publicado: Birmingham : Packt Publishing, [2020]
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)
Tabla de Contenidos:
  • Cover
  • Title Page
  • Copyright and Credits
  • Dedication
  • About Packt
  • Contributors
  • Table of Contents
  • Preface
  • Section 1: Fundamentals and Core Algorithms
  • Chapter 1: Overview of Algorithms
  • What is an algorithm?
  • The phases of an algorithm
  • Specifying the logic of an algorithm
  • Understanding pseudocode
  • A practical example of pseudocode
  • Using snippets
  • Creating an execution plan
  • Introducing Python packages
  • Python packages
  • The SciPy ecosystem
  • Implementing Python via the Jupyter Notebook
  • Algorithm design techniques
  • The data dimension
  • Compute dimension
  • A practical example
  • Performance analysis
  • Space complexity analysis
  • Time complexity analysis
  • Estimating the performance
  • The best case
  • The worst case
  • The average case
  • Selecting an algorithm
  • Big O notation
  • Constant time (O(1)) complexity
  • Linear time (O(n)) complexity
  • Quadratic time (O(n2)) complexity
  • Logarithmic time (O(logn)) complexity
  • Validating an algorithm
  • Exact, approximate, and randomized algorithms
  • Explainability
  • Summary
  • Chapter 2: Data Structures Used in Algorithms
  • Exploring data structures in Python
  • List
  • Using lists
  • Lambda functions
  • The range function
  • The time complexity of lists
  • Tuples
  • The time complexity of tuples
  • Dictionary
  • The time complexity of a dictionary
  • Sets
  • Time complexity analysis for sets
  • DataFrames
  • Terminologies of DataFrames
  • Creating a subset of a DataFrame
  • Column selection
  • Row selection
  • Matrix
  • Matrix operations
  • Exploring abstract data types
  • Vector
  • Stacks
  • The time complexity of stacks
  • Practical example
  • Queues
  • The basic idea behind the use of stacks and queues
  • Tree
  • Terminology
  • Types of trees
  • Practical examples
  • Summary
  • Chapter 3: Sorting and Searching Algorithms
  • Introducing Sorting Algorithms
  • Swapping Variables in Python
  • Bubble Sort
  • Understanding the Logic Behind Bubble Sort
  • A Performance Analysis of Bubble Sort
  • Insertion Sort
  • Merge Sort
  • Shell Sort
  • A Performance Analysis of Shell Sort
  • Selection Sort
  • The performance of the selection sort algorithm
  • Choosing a sorting algorithm
  • Introduction to Searching Algorithms
  • Linear Search
  • The Performance of Linear Search
  • Binary Search
  • The Performance of Binary Search
  • Interpolation Search
  • The Performance of Interpolation Search
  • Practical Applications
  • Summary
  • Chapter 4: Designing Algorithms
  • Introducing the basic concepts of designing an algorithm
  • Concern 1
  • Will the designed algorithm produce the result we expect?
  • Concern 2
  • Is this the optimal way to get these results?
  • Characterizing the complexity of the problem
  • Concern 3
  • How is the algorithm going to perform on larger datasets?
  • Understanding algorithmic strategies
  • Understanding the divide-and-conquer strategy
  • Practical example
  • divide-and-conquer applied to Apache Spark