Collection of algorithms and data structures in Java and C++ (for different languages see codelibrary-sandbox)
- Segment tree
- Fenwick tree
- Persistent tree
- Link/cut tree
- Binary heap
- Disjoint sets
- Treap
- k-d tree
- R-tree
- Metric tree
- Quadtree
- Shortest paths
- Maximum flow
- Maximum matching
- Spanning tree
- Connectivity
- Biconnectivity
- LCA
- Planarity testing (contribute a link or implementation)
- Dynamic graph connectivity (contribute a link or implementation)
- Chu–Liu/Edmonds' algorithm (contribute a link or implementation)
- Minimum augmentation to strong connectivity (contribute a link or implementation)
- Minimum augmentation to biconnectivity (contribute a link or implementation)
- Knuth-Morris-Pratt algorithm
- Aho-Corasick algorithm
- Suffix array
- suffix automata
- Suffix tree
- Trie
- Z-function
- Hashing
- Parsing
- Sorting strings in linear time (contribute a link or implementation)
- Segments intesection
- Line operations
- Circle operations
- Convex hull
- Point in polygon query
- Closest pair of points
- Furthest pair of points
- Combinatorics: permutations, combinations, arrangements, partitions
- Other: big numbers multiplication via fast Fourier transform, simplex algorithm