Lab of Analysis of Algorithms
Here are a series of slides and codes for the Lab of Analysis of Algorithms
- Ctypes and Python GitHub Slides
- Here an introduction on how to easily build C libraries for Python using ctypes
- Whey to use ctypes
- How to access numpy arrays
- The flatten array contiguous representation
- Using Docker for insulating your development environments
- Asymptotic Notation and Probability
- Insertion Sort GitHub
- The first algorithm
- How to calculate complexity on it
- A recursive version of it GitHub
- Merge Sort GitHub
- A Classic Implementation
- The in place merge version
- Heaps GitHub
- One of the basic tree representation before pointers
- The class Heap
- The Basic Implementations
- Heap Sort
- Quick Sort Under Tail Recursion GitHub
- Avoiding using the stack
- Using Tail Recursion
- Problems for the lab
- Linear Sorting
- Counting Sort
- Radix Sort
- Bucket Sort
- Median Order Statistics
- kth statistics
- Using Randomization
- Worst Case
-
Theoretical Exercises on Sorting and Statistics Slides
- Hash Tables GitHub
- The first hash table
- The table using Universal Hashing
- Open Addressing
- Problems for the lab
- Binary Trees GitHub
- Instead of going 1D go 2D
- The Binary Search Structure
- AVL Trees GitHub
- Balancing the BSTree
- Using recursion for that
-
Red-Black Trees
-
B-Trees
-
Dynamic Programming
-
Greedy Methods
-
Amortized Analysis
-
Fibonacci Heaps
-
Disjoint Set Representations
-
Graphs
- Minimum Spanning Trees
UNDER CONSTRUCTION