algorithms/README.md

3.3 KiB

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.