{"id":19784312,"url":"https://github.com/alexprut/algo","last_synced_at":"2025-04-30T22:32:07.392Z","repository":{"id":55269651,"uuid":"151491443","full_name":"alexprut/Algo","owner":"alexprut","description":"🍒 Classic Algorithms and Data Structures implemented in Java","archived":false,"fork":false,"pushed_at":"2024-05-07T10:53:46.000Z","size":597,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T05:51:11.884Z","etag":null,"topics":["algorithm","algorithms","data-structures","java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexprut.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-03T23:01:13.000Z","updated_at":"2024-11-14T20:54:20.000Z","dependencies_parsed_at":"2022-08-14T18:50:36.966Z","dependency_job_id":"e4becaf3-be05-4d60-8243-ab337d4f8390","html_url":"https://github.com/alexprut/Algo","commit_stats":{"total_commits":235,"total_committers":1,"mean_commits":235.0,"dds":0.0,"last_synced_commit":"27b3651c49fdbca60f7da4fb4010570ae5c18efb"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexprut%2FAlgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexprut%2FAlgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexprut%2FAlgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexprut%2FAlgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexprut","download_url":"https://codeload.github.com/alexprut/Algo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251791742,"owners_count":21644448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","algorithms","data-structures","java"],"created_at":"2024-11-12T06:11:09.981Z","updated_at":"2025-04-30T22:32:06.906Z","avatar_url":"https://github.com/alexprut.png","language":"Java","readme":"\u003cbr /\u003e\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://github.com/alexprut/Algo/raw/master/src/main/resources/logo.png\" width=\"400\" height=\"auto\"/\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n\u003ch3\u003eClassic Algorithms and Data Structures implemented in Java\u003c/h3\u003e\n\n[![Code Style](https://img.shields.io/badge/code%20style-google-green.svg?style=flat-square)](https://google.github.io/styleguide/javaguide.html)\n[![MIT](https://img.shields.io/dub/l/vibe-d.svg)](https://github.com/alexprut/Algo/blob/master/LICENSE)\n![Build Status](https://github.com/alexprut/Algo/actions/workflows/build.yml/badge.svg)\n[![GitHub release](https://img.shields.io/github/release/alexprut/Algo.svg)](https://github.com/alexprut/Algo/releases)\n[![Maven Central](https://img.shields.io/maven-central/v/com.alexprut/algo.svg)](https://search.maven.org/artifact/com.alexprut/algo)\n\n\n\u003c/div\u003e\n\u003cbr /\u003e\n\nAlgorithms\n==========\n\n|Algorithm|Worst-case time complexity|Average-case time complexity|Best-case time complexity|Auxiliary space complexity|\n|:---|:---|:---|:---|:---|\n|[Insertion Sort](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/sorting/InsertionSort.java)|Θ(n^2)|Θ(n^2)|O(n)|-|\n|[BubbleSort](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/sorting/BubbleSort.java)|O(n^2)|O(n^2)|O(n)|-|\n|[MergeSort](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/sorting/MergeSort.java)|Θ(nlogn)|Θ(nlogn)|Θ(nlogn)|-|\n|[HeapSort](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/MaxHeap.java#L82)|Θ(nlogn)|-|-|-|\n|[QuickSort](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/sorting/QuickSort.java)|Θ(n^2)|Θ(nlogn)|Θ(nlogn)|-|\n|[CountingSort](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/sorting/CountingSort.java)|Θ(k + n)|Θ(k + n)|Θ(n)|Θ(n)|\n|[RadixSort](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/sorting/RadixSort.java)|Θ(d(k + n))|Θ(d(k + n))|Θ(n)|-|\n|[Floyd-Warshall](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/graph/FloydWarshall.java)|Θ(V^3)|Θ(V^3)|Θ(V^3)|Θ(V^2)|\n|[Kruskal](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/graph/mst/Kruskal.java)|O(\\|E\\|log\\|V\\|)|-|-|-|\n|[Prim](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/graph/mst/Prim.java)|O(\\|E\\| + \\|V\\|log\\|V\\||-|-|-|\n|[Bellman–Ford](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/graph/BellmanFord.java)|Θ(\\|E\\|\\|V\\|)|-|-|Θ(V)|\n|[Dijkstra](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/graph/Dijkstra.java)|O(\\|E\\| + \\|V\\|log\\|V\\|)|-|-|-|\n|[Maximum SubArray](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/MaximumSubArray.java)|Θ(n)|Θ(n)|Θ(n)|Θ(1)|\n|[Knuth-Morris-Pratt](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/KnuthMorrisPratt.java)|Θ(n + m)|Θ(n)|Θ(n)|Θ(n)|\n|[Rabin-Karp](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/RabinKarp.java)|Θ((n - m + 1)m)|Θ(n)|Θ(n)|-|\n|[Greatest common divisor (GCD)](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/math/Math.java#L13)|-|-|-|-|\n|[Binary Search](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/search/BinarySearch.java)|O(nlogn)|O(nlogn)|O(1)|Θ(1)|\n|[Breadth First Search (BFS)](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/search/BreadthFirstSearch.java#L43)|O(\\|E\\|+\\|V\\|)|O(\\|E\\|+\\|V\\|)|-|-|\n|[Depth First Search (DFS)](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/search/DepthFirstSearch.java#L10)|O(\\|E\\|+\\|V\\|)|O(\\|E\\|+\\|V\\|)|-|-|\n|[Topological Sort (DFS)](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/algorithms/search/DepthFirstSearch.java#L91)|O(\\|E\\|+\\|V\\|)|O(\\|E\\|+\\|V\\|)|-|-|\n|[Longest Increasing Subsequence (LIS)](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/Utils.java#L98)|Θ(n^2)|-|-|Θ(n)|\n|[Longest Common Subsequence (LCS)](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/Utils.java#L128)|Θ(n^2)|-|-|Θ(n^2)|\n\nData Structures\n===============\n|Data Structure|Methods|\n|--------------|-------|\n|[Max Heap](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/MaxHeap.java)|```max()``` - Θ(1), ```extractMax()``` - O(nlogn), ```increaseKey()``` - O(logn), ```insert()``` - O(logn), ```heapify()``` - O(logn), ```heapsort()``` - O(nlogn)|\n|[Min Heap](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/MinHeap.java)|```min()``` - Θ(1), ```extractMin()``` - O(nlogn), ```insert()``` - O(logn), ```heapify()``` - O(logn), ```heapsort()``` - O(nlogn)|\n|[MinMax Heap](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/MinMaxHeap.java)|```min()``` - Θ(1), ```max()``` - Θ(1), ```extractMin()``` - O(nlogn), ```extractMax()``` - O(nlogn), ```insert()``` - O(logn), ```heapify()``` - O(logn)|\n|[Disjoint Set](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/DisjointSet.java)|```makeSet()``` - Θ(1), ```findSet()``` - Θ(1), ```union()``` - Θ(1)|\n|[Trie](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/Trie.java)|```insert()``` - O(\\|s\\|), ```search()``` - O(\\|s\\|), ```searchPrefix()``` - O(\\|s\\|), ```remove()``` - O(\\|s\\|), ```size()``` - O(1)|\n|[Stack](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/Stack.java)|```push()``` - Θ(1), ```pop()``` - Θ(1), ```empty()``` - Θ(1), ```size()``` - Θ(1), ```peek()``` - Θ(1)|\n|[Queue](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/Queue.java)|```enqueue()``` - Θ(1), ```dequeue()``` - Θ(1), ```empty()``` - Θ(1), ```size()``` - Θ(1)|\n|[Binary Search Tree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/BinarySearchTree.java)|```insert()``` - O(n), ```search()``` - O(n), ```delete()``` - O(n), ```contains()``` - O(n), ```minimum()``` - O(n), ```maximum()``` - O(n), ```size()``` - Θ(1), ```successor()``` - O(logn), ```predecessor()``` - O(logn), ```preOrderVisit()``` - O(n), ```inOrderVisit()``` - O(n), ```postOrderVisit()``` - O(n)|\n|[Double Linked List](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/DoubleLinkedList.java)|```insertFront()``` - Θ(1), ```removeFront()``` - Θ(1), ```insertBack()``` - Θ(1), ```removeBack()``` - Θ(1), ```head()``` - Θ(1), ```size()``` - Θ(1), ```search()``` - Θ(n), ```remove()``` - Θ(n)|\n|[Linked List](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/LinkedList.java)|```insertFront()``` - Θ(1), ```removeFront()``` - Θ(1), ```head()``` - Θ(1), ```size()``` - Θ(1), ```search()``` - Θ(n), ```remove()``` - Θ(n)|\n|[Skip List](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/SkipList.java)| ```insert()``` - Θ(logn), ```remove()``` - Θ(logn), ```search()``` - O(logn), ```size()``` - Θ(1)|\n|[Graph](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/Graph.java)|```buildAdjacencyMatrix()``` - Θ(\\|V\\|^2), ```buildAdjacencyList()``` - Θ(\\|V\\| + \\|E\\|), ```addEdge()``` - Θ(1)|\n|[Red-Black Tree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/RedBlackTree.java)|```insert()``` - O(logn), ```search()``` - O(logn), ```delete()``` - O(logn), ```minimum()``` - O(logn), ```maximum()``` - O(logn), ```successor()``` - O(logn), ```predecessor()``` - O(logn)|\n|[Interval Tree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/IntervalTree.java)|```insert()``` - O(logn), ```search()``` - O(logn), ```find()``` - O(logn), ```findAll()``` - O(n), ```delete()``` - O(logn), ```minimum()``` - O(logn), ```maximum()``` - O(logn), ```successor()``` - O(logn), ```predecessor()``` - O(logn)|\n|[Segment Tree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/SegmentTree.java)|```build()``` - O(n), ```update()``` - O(logn), ```search()``` - O(logn)|\n|[AVL Tree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/AVLTree.java)|```insert()``` - O(logn), ```search()``` - O(logn), ```delete()``` - O(logn), ```minimum()``` - O(logn), ```maximum()``` - O(logn), ```successor()``` - O(logn)|\n|[B-Tree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/BTree.java)|```insert()``` - O(th), ```search()``` - O(th), ```delete()``` - O(th), ```successor()``` - O(th), ```predecessor()``` - O(th)|\n|[QuadTree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/QuadTree.java)|```insert()``` - O(logn), ```search()``` - O(logn), ```delete()``` - O(logn), ```size()``` - Θ(1)|\n|[Fibonacci Heap](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/FibonacciHeap.java)|```insert()``` - O(1), ```minimum()``` - O(1), ```extractMin()``` - O(logn), ```decreaseKey()``` - O(1), ```delete()``` - O(logn)|\n|[Merkle Tree](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/MerkleTree.java)|```build()``` - O(n), ```verify()``` - O(logn), ```getProofPath()``` - O(logn)|\n|[Bloom Filter](https://github.com/alexprut/Algo/blob/master/src/main/java/com/alexprut/algo/datastructures/BloomFilter.java)|```search()``` - O(k), ```insert()``` - O(k)|\n\n---\n\n### Add to your build\nTo add a dependency using Gradle, use the following:\n```\nimplementation 'com.alexprut:algo:v0.4.0'\n```\n\nTo add a dependency using Gradle Kotlin DSL:\n```\nimplementation(\"com.alexprut:algo:v0.4.0\")\n```\n\nTo add a dependency using Maven:\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.alexprut\u003c/groupId\u003e\n  \u003cartifactId\u003ealgo\u003c/artifactId\u003e\n  \u003cversion\u003ev0.4.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n#### Requirements\n- Gradle 8\n- Java 11\n\n### Build\n```\n./gradlew clean build\n```\n\n### Test\n```\n./gradlew test\n```\n\n### Formatting style\n```\n./gradlew goJF\n```\n\n```\n./gradlew verGJF\n```\n\n### Generate Changelog\n\n```\ngit-chglog v1.0.0..v2.0.0\n```\n\nLicense\n=======\nLicensed under [MIT](https://github.com/alexprut/Algo/blob/master/LICENSE).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexprut%2Falgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexprut%2Falgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexprut%2Falgo/lists"}