Java : Algorithms and Data Structure
The algorithms and data structures are implemented in Java.
This is a collection of algorithms and data structures I've implemented in my academic and professional life. The code isn't optimized but is written to be correct and readable. The algorithms and data structures are tested and, unless noted, believed to be correct.
Created by Justin Wetherell
Support me with a donation
What's been implemented:
Table of Contents
Data Structures
Mathematics
Distance
chebyshev
euclidean
Division
using a loop
using recursion
using shifts and multiplication
using only shifts
using logarithm
Multiplication
using a loop
using recursion
using only shifts
using logarithms
Exponentiation
recursive exponentiation
fast recursive exponentiation
fast modular recursive exponentiation
Primes
is prime
prime factorization
sieve of eratosthenes
Miller-Rabin test
Greatest Common Divisor
using Euclid's algorithm
using recursion
Permutations
strings
numbers
Modular arithmetic
add
subtract
multiply
divide
power
Numbers
Integers
to binary String
using divide and modulus
using right shift and modulus
using BigDecimal
using divide and double
is a power of 2
using a loop
using recursion
using logarithm
using bits
to English (e.g. 1 would return "one")
Longs
to binary String
using divide and modulus
using right shift and modulus
using BigDecimal
Complex
addition
subtraction
multiplication
absolute value
polar value
Graphs
Search
Sequences
Sorts
String Functions
Reverse characters in a string
using additional storage (a String or StringBuilder)
using in-place swaps
using in-place XOR
Reverse words in a string
using char swaps and additional storage (a StringBuilder)
using StringTokenizer and additional (a String)
using split() method and additional storage (a StringBuilder and String[])
using in-place swaps
Is Palindrome
using additional storage (a StringBuilder)
using in-place symetric element compares
Subsets of characters in a String
Edit (Levenshtein) Distance of two Strings (Recursive, Iterative)
Find in lexicographically minimal string rotation
Find in lexicographically maximal string rotation