Problem-Solving-with-Algorithms-and-Data-Structures-using-Python
I started the project by learning data structures and algorithms from a book Problem Solving with Algorithms and Data Structures using Python. It does not contain everything from the book, nor is everything implemented in the same way, but it also contains other data structures, algorithms and problems.
Algorithm analysis
- Anagrams - quadratic solution
- Anagrams - log linear solution
- Anagrams - linear solution
- Time - iterative solution
- Time - non-iterative solution
Stack
- Stack - array implementation
- Stack - less efficient array implementation
- Stack - fixed size array implementation
- Stack two queues
- Stack - linked list implementation
Queue
- Queue - array implementation
- Queue - fixed size array implementation
- Queue - linked list implementation
- Circular queue - fixed size array implementation
- Queue - two stacks implementation
Deque
Linked lists
Recursion
- Convert number - recursive solution
- Convert number - iterative solution
- Factorial
- Fibonacci - iterative solution
- Fibonacci - recursive worst solution
- Fibonacci - memoization
- Fibonacci - recursive solution
- Fibonacci sum
- Maze - path finder
- Palindrome
- Reverse linked list - recursive solution
- Reverse linked list - iterative solution
- Reverse linked list - iterative solution stack
- Reverse list
- Reverse string
- Sum numbers - binary recursion
- Sum numbers - recursion with pointer
- Sum numbers - recursion with slicing
- Towers of Hanoi
Searching
- Sequential search - unordered list
- Sequential search - ordered list
- Binary search iterative
- Binary search recursive
- Binary search recursive pointers
Hash table
Trees
- List of lists representation
- Class representation
- Parse tree
- Tree traversal
- Binary Heap - min heap implementation
- Binary Search Tree
- AVL tree
Sorting
- Bubble sort
- Short bubble
- Insertion sort
- Selection sort
- Merge sort
- Quicksort in place
- Quicksort - return new array
Graphs
- Breadth first search
- Depth first search
- Cycle detection
- Topological sorting
- Dijkstra algorithm - Shortest path
- Bellman-Ford algorithm
- Bellman-Ford algorithm - negative weight cycle
- Minimum Spanning Tree
- Is graph bipartite
- Union find
- Kosaraju's algorithm