This project is a java-codebase containing various algorithms, data-structures and other things that are somehow related to the general topic. The project has educational and training purposes.
-
classic algorithms - a collection of well-known algorithms and several algorithmic puzzles made in form of junit5-based demonstration system
content
-
Algorithms for raising a real number to a natural power :
-
Fibonacci number calculation:
-
Primes number calculation:
-
Greatest common divisor algorithms:
-
Sorting algorithms:
-
String algorithms:
- Naive full-scan algorithm to search substring
- Boyer–Moore–Horspool algorithm to search substring
- Boyer–Moore algorithm to search substring, wiki variant
- Boyer–Moore algorithm to search substring, ssz variant
- Knuth-Morris-Pratt algorithm to search substring, naive prefix function
- Knuth-Morris-Pratt algorithm to search substring, classic prefix function
-
Bitboard algorithms:
-
Miscellaneous recursion and dynamic programming tasks
- Happy tickets problem
- Sum of fractions
- Pyramid problem: searching the maximum "garland" in the "digital christmas tree"
- Counting two-digit numbers with exclusion of three consecutive digits series ("5x8 problem")
- Matrix islands: find all 1-digit islands from square matrix consisting of 0 and 1
- Calculation the maximum possible shed area on a fixed rectangular area with some obstacles
-
-
data structures - a collection of different data-structures with JMH-based demonstration.
content
-
Maps (Key-Value Dictionaries):
- Trees:
- Hash-tables:
- Wrappers to compare:
-
Misc data-structures: Bloom Filter:
-
- Demucron's algorithm (topological sorting)
- Kosaraju's algorithm (strongly connected component searching)
- Borůvka's algorithm (optimized Kruskal's algorithm, a searching of minimum spanning tree)
- Dijkstra's algorithm (an algorithm for finding the shortest paths in weighted graph)
-
data compression algorithms - a simple command-line utility to encode/decode files using different approaches.
-
algorithmic puzzles - another attempt to systematize puzzles for coding interviews
- Git
- Java 11+
- Maven 3+