implementation of some algorithms seen during the Algorithm Engineer course @ UniPi.
Official notes of the course.
Chapters:
- Drawing from all un-sampled positions (drawing_sampling.hpp)
- Dictionary of sampled positions (dictionary_sampling.hpp)
- Sorting sampling (sorting_sampling.hpp)
- Scanning an selecting (scanning_sampling.hpp)
- Heap and random keys (heap_sampling.hpp)
- Reservoir sampling (reservoir_sampling.hpp)
- Pointer jumping technique
- Divide&Conquer approach
- Binary Merge sort
- Snow Plow
- Three-way Quick sort
- Rand select
- Bounded space Quick sort
- Dual Pivot Quick sort
- Merge-based Set intersection (merge_intersection.hpp)
- Binary-search-based Set intersection (binary_search.hpp)
- Mutual Partitioning Set intersection (mutual_partitioning.hpp)
- Doubling Search Set intersection (doubling_search.hpp)
- MSD Radix sort
- LSD Radix sort
- Multikey Quick sort
- Order Preserving Minimal Perfect Hash Function
- Two-Level hashing
- Cuckoo hashing
- Bloom Filters
- Compacted Trie
- Patricia Trie
- Suffix Array
- LCP Array
- Suffix Tree
- Approximate-pattern matching
- LCA via RMQ
- Binary code (binary_code.hpp)
- Unary code (unary_code.hpp)
- Fixed-Length code (fixed_length_code.hpp)
- Elias Gamma code (elias_gamma_code.hpp)
- Elias Delta code (elias_delta_code.hpp)
- Rice code (rice_code.hpp)
- PForDelta code (pfordelta_code.hpp)
- Variable-byte code (variable_byte_code.hpp)
- (s,c)-dense code (sc_dense_code.hpp)
- Interpolative code (interpolative_code.hpp)
- Elias-Fano code (elias_fano_code.hpp)
- Huffman coding
- Canonical Huffman
- Arithmetic Coding
- LZ77
- LZSS
- LZ78
- LZW
- Burrows-Wheeler Transform
- Move-To-Front Transform
- Run-Length-Encoding Transform
- BZip compressor
- Minimum Spanning Tree: Kruskal
- Minimum Spanning Tree: Prim
- Minimum Spanning Tree: Sibeyn
- Skip List
- Treap