Introduction to Algorithms A Comprehensive Guide for Beginners : Unlocking Computational Thinking
Discover the fundamentals and advanced concepts of algorithms with this comprehensive course. Learn about efficiency, types, design techniques, and real-world applications, and enhance your algorithmic knowledge. Key Features Basics to advanced algorithm design and applications, along with real-worl...
Autor Corporativo: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Birmingham :
Packt Publishing, Limited
2024.
|
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009835439106719 |
Tabla de Contenidos:
- Intro
- Code Blocks Resource
- Premium Customer Support
- Who we are
- Our Philosophy
- Our Expertise
- Introduction
- Preface
- Introduction to the Book
- Who Should Read This Book
- How to Use This Book
- Chapter 1: Introduction to Algorithms
- 1.1 What is an Algorithm?
- 1.1.1 Characteristics of a Good Algorithm
- 1.1.2 How Algorithms are Used
- 1.1.3 Brief Summary and Some Points for Further Reflection
- 1.2 Importance of Algorithms in Computer Science
- 1.2.1 Algorithms Power Our Digital World
- 1.2.2 Algorithms Drive Efficiency
- 1.2.3 Algorithms Form the Basis of Advanced Fields
- 1.2.4 The Future Implications and Advancements in Algorithms
- 1.3 Fundamentals of Computational Thinking
- 1.3.1 Decomposition
- 1.3.2 Pattern Recognition
- 1.3.3 Abstraction
- 1.3.4 Algorithmic Thinking
- 1.3.5 Debugging and Iteration
- 1.4 Practice Problems
- Problem 1: Password Generator
- Problem 2: Calendar Events
- Problem 3: Building a Pyramid
- Problem 4: Text Compression
- 1.5 Chapter Summary
- Chapter 2: Pseudocode and Flowcharts
- 2.1 Understanding Pseudocode
- 2.1.1 Flexibility of Pseudocode
- 2.2 Understanding Flowcharts
- 2.3 Translating Real-World Problems into Pseudocode
- 2.4 Practice Problems
- Problem 1
- Problem 2
- Problem 3
- Chapter 2 Summary
- Chapter 3: Algorithm Efficiency
- 3.1 Understanding Time Complexity
- 3.1.1 Big O notation
- 3.1.2 Difference between the best-case, average-case, and worst-case time complexity
- 3.2 Understanding Space Complexity
- 3.2.1 Caching/Memoization
- 3.3 Introduction to Big O Notation
- 3.3.1 What is Big O Notation?
- 3.3.2 Common Types of Time Complexities
- 3.3.3 Asymptotic Analysis
- 3.4 Practice Problems
- Linear Search:
- Sum of Elements:
- Find Duplicate:
- Bubble Sort:
- Chapter 3 Summary
- Chapter 4: Basic Algorithm Types
- 4.1 Divide and Conquer Algorithms
- 4.2 Greedy Algorithms
- 4.2.1 What is a Greedy Algorithm?
- 4.2.2 Coin Change Problem
- 4.3 Dynamic Programming Algorithms
- 4.4 Recursive Algorithms
- 4.4.1 Tail Recursion
- 4.5 Practice Problems
- Problem 1: Binary Search (Divide and Conquer)
- Problem 2: Coin Change (Greedy Algorithm)
- Problem 3: Fibonacci Series (Dynamic Programming)
- Problem 4: Sum of Natural Numbers (Recursive Algorithm)
- Problem 5: QuickSort (Divide and Conquer)
- Problem 6: Implementing a Stack using Recursion (Recursive Algorithm)
- Chapter 4 Summary
- Chapter 5: Search Algorithms
- 5.1 Linear Search
- 5.1.1 Limitations of Linear Search
- 5.2: Binary Search
- 5.3 Hashing and Hash Tables
- 5.3.1 Collisions
- 5.4 Practice Problems
- Problem 1: Linear Search
- Problem 2: Binary Search
- Problem 3: Hashing
- Problem 4: Binary Search vs Linear Search
- Chapter 5 Summary
- Chapter 6: Sort Algorithms
- 6.1 Bubble Sort
- 6.1.1 When and Why to Use or Not to Use Bubble Sort
- 6.2 Selection Sort