Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Algorithms and Data Structures implemented in Java

License

NotificationsYou must be signed in to change notification settings

venkat575/java-algorithms-implementation

 
 

Repository files navigation

Algorithms and Data Structures implemented in Java

This is a collection of algorithms and data structures which I've implement over the years in my academic and professional life. The code isn't overly-optimized but is written to be correct and readable. The algorithms and data structures are well tested and, unless noted, are believe to be 100% correct.

Support me with a donation

Donate to this project

What's been implemented:

Data Structures

  • AVL Tree
  • B-Tree
  • Binary Heap [backed by an array or a tree]
  • Binary Search Tree
  • Compact Suffix Trie [backed by a Patricia Trie]
  • Disjoint Set
  • Fenwick Tree [Binary Indexed Tree (BIT)]
  • Graph
    • Undirected
    • Directed (Digraph)
  • Hash Array Mapped Trie (HAMT)
  • Hash Map (associative array)
  • Interval Tree
  • Implicit Key Treap
  • KD Tree (k-dimensional tree or k-d tree)
  • List [backed by an array or a linked list]
  • Matrix
  • Patricia Trie
  • Quad-Tree (Point-Region or MX-CIF)
  • Queue [backed by an array or a linked list]
  • Radix Trie (associative array) [backed by a Patricia Trie]
  • Red-Black Tree
  • Segment Tree
  • Skip List
  • Splay Tree
  • Stack [backed by an array or a linked list]
  • Suffix Tree (Ukkonen's algorithm)
  • Suffix Trie [backed by a Trie]
  • Treap
  • Tree Map (associative array) [backed by an AVL Tree]
  • Trie
  • Trie Map (associative array) [backed by a Trie]

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
  • Primes
    • is prime
    • prime factorization
    • sieve of eratosthenes

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
    • greatest common divisor
      • using Euclid's algorithm
    • to English (e.g. 1 would return "one")
  • Longs
    • to binary String
      • using divide and modulus
      • using right shift and modulus
      • using BigDecimal

Path

  • Find shortest path(s) in a Graph from a starting Vertex
    • Dijkstra's algorithm (non-negative weight graphs)
    • Bellman-Ford algorithm (negative and positive weight graphs)
  • Find minimum spanning tree
    • Prim's (undirected graphs)
  • Find all pairs shortest path
    • Johnsons's algorithm (negative and positive weight graphs)
    • Floyd-Warshall (negative and positive weight graphs)
  • Cycle detection
    • Depth first search while keeping track of visited Verticies
  • Topological sort
  • A* path finding algorithm

Search

  • Get index of value in array
    • Linear
    • Quickselect
    • Binary [sorted array input only]
    • Optimized binary (binary until a threashold then linear) [sorted array input only]
    • Interpolation [sorted array input only]

Sequences

  • Find longest common subsequence (dynamic programming)
  • Find number of times a subsequence occurs in a sequence (dynamic programming)
  • Find i-th element in a Fibonacci sequence
    • using a loop
    • using recursion
    • using matrix multiplication
    • using Binet's formula
  • Find total of all elements in a sequence
    • using a loop
    • using Triangular numbers

Sorts

  • American Flag Sort
  • Bubble Sort
  • Counting Sort (Integers only)
  • Heap Sort
  • Insertion Sort
  • Merge Sort
  • Quick Sort
  • Radix Sort (Integers only)
  • Shell's Sort

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

About

Algorithms and Data Structures implemented in Java

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java100.0%

[8]ページ先頭

©2009-2025 Movatter.jp