This repository is meant to be a tool to help me ensure I fully grasp these concepts, I made it public because it might help others too, and I may want to look over it again someday. It's glorified homework.
Throughout this repo I try to keep my code very pythonic, especially paying attention to PEP8 formatting and modern python best practices. I start off very basic and slowly ramp up the difficulty, commenting everything then only commenting new ideas/syntax.
Most things here are based on Problem Solving with Algorithms and Data Structures using Python which is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Everything else is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.
If there's anything you do not understand, file an issue and I will attempt to clarify. If you think you can make my code better, by all means submit a pull request. Try to pay attentions to the ramp up in code complexity I am attempting, don't try to make some code golf nonsense in the basic data structures and expect to get merged.
- big_o.py - Some simple examples of Big O algorithms in Python.
- basic - The basic data structures, with some examples.
- stack
- queue
- deque
- unordered list
- ordered list
- recursion - Some examples of recursive algorithms.
- simple
- stack frames
- visualizing recursion simple
- visualizing recursion
- sierpinski triangle
- tower of hanoi
- maze
- dynamic programming
- sort_search - Some examples of sorting and searching algorithms.
- sequential search
- binary search
- hash table
- bubble sort
- selection sort
- insertion sort
- shell sort
- merge sort
- quick sort
- tree - Some examples of trees and tree algorithms.
- list of lists
- binary tree
- parse tree
- binary heap
- binary search trees
- balanced binary search trees
- graphs - Some examples of graphs and graph algorithms.
- adjacency list
- breadth first search
- depth first search
- shortest path
- More Big O examples
- Simplify/pythonify code
- Finish explanations
- End of chapter questions
- Programming exercises
- Testing