An open API service indexing awesome lists of open source software.

https://github.com/devluxor/common-sense-guide-to-dsa

This repository contains notes made while studying from the Jay Wengrow's book: 'A Common-Sense Guide to Data Structures and Algorithms: Level Up Your Core Programming Skills' .
https://github.com/devluxor/common-sense-guide-to-dsa

Last synced: 4 months ago
JSON representation

This repository contains notes made while studying from the Jay Wengrow's book: 'A Common-Sense Guide to Data Structures and Algorithms: Level Up Your Core Programming Skills' .

Awesome Lists containing this project

README

          

# A Common Sense Guide to Data Structures and Algorithms

This repository contains notes made while studying the Jay Wengrow's book: 'A Common-Sense Guide to Data Structures and Algorithms: Level Up Your Core Programming Skills'.

For an alternative approach to these topics, please visit the [Launch School 'Introduction to DSA' course](https://github.com/lucsorr/launch-school/tree/main/LS220/notes).

## Contents:

1. [Why Data Structures Matter](./01_why_data_structures_matter.md)

- The Array: The Foundational Data Structure
- Reading
- Searching
- Insertion
- Deletion
- Sets: How a Single Rule Can Affect Efficiency

.

2. [Why Algorithms Matter](./02_why_algorithms_matter.md)

- Ordered Arrays
- Searching an Ordered Array
- Binary Search
- Binary Search Vs. Linear Search

.

3. [Big O Notation](./03_big_o_notation.md)

- Big O: Count the Steps
- Constant Time Vs. Linear Time
- Same Algorithm, Different Scenarios
- An Algorithm of the Third Kind
- Logarithms
- O(log N) Explained

.

4. [Speeding Up Your Code with Big O](./04_speeding_up_your_code_with_big_o.md)

- Bubble Sort
- Bubble Sort Implemented
- The Efficiency of Bubble Sort
- A Quadratic Problem
- A Linear Solution [_Nice trick to check for duplicates in an array fast, in linear time_]

.

5. [Optimizing Code With and Without Big O](./05_optimizing_code_with_and_without_big_o.md)
- Selection Sort
- Selection Sort Implemented
- The Efficiency of Selection Sort
- Ignoring Constants
- The Role of Big O
- A Practical Example [_Nice trick to add every other element of an array to another array_]

.

6. [Optimizing for Optimistic Scenarios](./06_optimizing_for_optimistic_scenarios.md)
- Insertion Sort
- Insertion Sort Implemented
- The Efficiency of Insertion Sort
- The Average Case
- A Practical Example [_Nice trick to improve the speed of some nested iterations_]

.

7. [Blazing Fast Lookup With Hash Tables](./07_blazing_fast_lookup_with_hash_tables.md)
- Enter the Hash Table
- Hashing with Hash Functions
- How Hash Function Work
- Dealing with Collisions
- The Great Balancing Act [_Load factor (data/cells ratio) when implementing hashes_]

.

8. [Crafting Elegant Code with Stacks and Queues](./08_crafting_elegant_code_with_stacks_and_queues.md)
- Stacks
- Stacks in Action [_Algorithm to check for valid braces in a string_]
- Queues
- Queues in Action

.

9. [Recursively Recurse with Recursion](./09_recursively_recurse_with_recursion.md)
- Recurse Instead of Loop
- The Base Case
- Reading Recursive Code
- Recursion in the Eyes of the Computer
- Recursion in Action [_Algorithm to recursively traverse all files and subdirectories from a root folder_]

.

10. [Recursive Algorithms for Speed](./10_recursive_algorithms_for_speed.md)
- Partitioning
- Quicksort
- The Efficiency of Quicksort
- Worst Case Scenario
- Quickselect

.

11. [Node-based Data Structures](./11_node_based_data_structures.md)
- Linked Lists
- Implementing a Linked List
- Reading
- Searching
- Insertion
- Deletion
- Linked Lists in Action [_Good practice case for the need of a linked list_]
- Doubly Linked Lists

.

12. [Speeding Up All the Things with Binary Trees](./12_speeding_up_all_the_things_with_binary_trees.md)
- Binary Trees
- Searching
- Insertion
- Deletion
- Binary Trees in Action [_Includes traversal algorithm_]

.

13. [Connecting Everything with Graphs](./13_connecting_everything_with_graphs.md)
- Graphs
- Breadth-First Search
- Graph Databases
- Weighted Graphs
- Dijkstra's Algorithm

.

14. [Dealing with Space Constraints](./14_dealing_with_space_constraints.md)
- Big O Notation As Applied to Space Complexity
- Trade-offs between time and space