A simple repository used to learn algorithms by coding them myself
.idea | ||
gradle/wrapper | ||
searching | ||
sorting | ||
build.gradle | ||
gradlew | ||
gradlew.bat | ||
README.md | ||
settings.gradle |
Algorithms
This repository is meant for me to compile a list of examples of different algorithms that I have learned of, and develop a working implementation. These implementations may not be the most efficient, so please do point it out to me if you see something that could be improved upon. The complexity notations were taken primarily from the Big O Cheat Sheet
Searching
Algorithm | Implementation | Tests | Worst Time Complexity | Worst Space Complexity |
---|---|---|---|---|
Binary Search | BinarySearch.java | ParameterizedBinarySearchTest.java | O(log n) | O(1) |
Fibonacci Search | FibonacciSearch.java | ParameterizedFibonacciSearchTest.java | O(log n) | O(1) |
Jump Search | FibonacciSearch.java | ParameterizedJumpSearchTest.java | O(√n) | O(1) |
Linear Search | LinearSearch.java | ParameterizedLinearSearchTest.java | O(n) | O(1) |
Sorting
Algorithm | Implementation | Tests | Worst Time Complexity | Worst Space Complexity |
---|---|---|---|---|
Bubble Sort | BubbleSort.java | ParameterizedBubbleSortTest.java | O(n²) | O(1) |
Insertion Sort | InsertionSort.java | ParameterizedInsertionSortTest.java | O(n²) | O(1) |
Merge Sort | MergeSort.java | ParameterizedMergeSortTest.java | O(n log(n)) | O(n) |
Selection Sort | SelectionSort.java | ParameterizedSelectionSortTest.java | O(n²) | O(1) |
Building/Testing
./gradlew test
To keep things simple, the tests share the same data where possible.