This repository contains an implementation of common data structures and algorithms in Java. This code is primarily intended for understanding and learning data structures, and for finding their complexity. It is designed for students and self-learners.
Great request, if you see an error or inaccuracy, please make a correction. Any help is welcome.
The following keys are used to indicate the level of difficulty and time/space complexity of each algorithm:
π
: easy;π
: medium;π
: hard;βοΈ(1)
,βοΈlog(N)
,βοΈ(N^2)
, etc: time and space complexity;- [
βπ»
]: in progress; - [
ππ»ββοΈ
]: hard to solve; - [
β
]: the solution is not optimal; - [
π
]: Test passed Ok;
The following data structures are implemented in this repository:
The Arrays
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed: |
---|---|---|---|---|---|
findMin | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
mergeSortedArrays | π |
βοΈ |
βοΈ(N) |
βοΈ(N) |
[π ] Open |
mergeUnsortedArrays | π |
βοΈ |
βοΈ(N^2) |
βοΈ(N) |
[π ] Open |
pop | π |
βοΈ |
βοΈ(N) |
βοΈ(N) |
[π ] Open |
push | π |
βοΈ |
βοΈ(N) |
βοΈ(N) |
[π ] Open |
remove(position) | π |
βοΈ |
βοΈ(N) |
βοΈ(N) |
[π ] Open |
reverse | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
reverse(start,end) | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
size | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
sort | π |
βοΈ |
βοΈ(N^2) |
βοΈ(1) |
[π ] Open |
genericArray <T> | π |
βοΈ |
[π ] Open |
The Sort
classes provide the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed: |
---|---|---|---|---|---|
Buble Sort <T> | π |
βοΈ |
βοΈ(N^2) |
βοΈ(1) |
[π ] Open |
Quick Sort | π |
βοΈ |
βοΈ(N log(N)) |
βοΈ(log(N)) |
[π ] Open |
MergeSort | π |
βοΈ |
βοΈ(N log(N)) |
βοΈ(N) |
[π ] Open |
Insertion Sort | π |
βοΈ |
βοΈ(N^2) |
βοΈ(1) |
[π ] Open |
The Matrix
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed: |
---|---|---|---|---|---|
rotate | π |
βοΈ |
βοΈ(N^2) |
βοΈ(1) |
[π ] Open |
transpose | π |
βοΈ |
βοΈ(N^2) |
βοΈ(1) |
[π ] Open |
reflect | π |
βοΈ |
βοΈ(N^2) |
βοΈ(1) |
[π ] Open |
The SinglyLinkedList
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed: |
---|---|---|---|---|---|
append(data) | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
preppend(data) | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
find(data) | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
deleteFirst() | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
deleteLast() | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
deletePos(position) | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
length() | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
reverse() | π |
βοΈ |
βοΈ(N^2) |
βοΈ(N) |
[π ] Open |
getMid(LinkedList) | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
merge(LinkedList, LinkedList) | π |
βοΈ |
βοΈ(N+M) |
βοΈ(1) |
[π ] Open |
sort() | π |
βοΈ |
βοΈ(N log(N)) |
βοΈ(log(N)) |
[π ] Open |
The DoublyLinkedList
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed: |
---|---|---|---|---|---|
append(data) | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
preppend(data) | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
deleteFirst() | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
deleteLast() | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
The BinarySearchArray
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed |
---|---|---|---|---|---|
Binary Search Iterative | π |
βοΈ |
βοΈ(log(N)) |
βοΈ(1) |
[π ] Open |
Binary Search Recursive | π |
βοΈ |
βοΈ(log(N)) |
βοΈ(log(N)) |
[π ] Open |
The Stack
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed |
---|---|---|---|---|---|
getMin() | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
peek() | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
pop() | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
push(data) | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
The Queue
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed |
---|---|---|---|---|---|
isEmpty() | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
peek() | π |
βοΈ |
βοΈ(1) |
βοΈ(1) |
[π ] Open |
enqueue() | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
dequeue() | π |
βοΈ |
βοΈ(N) |
βοΈ(1) |
[π ] Open |
The BinaryHeap
class provides the following algorithms:
Algorithm (operation) | Level | Done | Time Complexity | Space Complexity | Tests passed |
---|---|---|---|---|---|
insert() | π |
βοΈ |
βοΈ(log(N)) |
βοΈ(1) |
[π ] Open |
delete(index) | π |
βοΈ |
βοΈ(log(N)) |
βοΈ(1) |
[π ] Open |
sort() | π |
βοΈ |
βοΈ(N log(N)) |
βοΈ(1) |
[π ] Open |
fixHeapAbove(index) | π |
βοΈ |
βοΈ(log(N)) |
βοΈ(1) |
|
fixHeapAbove(index, lastHeapIndex) | π |
βοΈ |
βοΈ(log(N)) |
βοΈ(1) |
The Tree
class provides the following algorithms:
Algorithm (operation) | Level | Done | Big βοΈ Notation | Tests passed |
---|---|---|---|---|
Binary Tree Recursive: insert(data) | π |
βοΈ |
βοΈlog(N) |
[π ] Open |
Binary Tree Recursive: preOrderPrint() | π |
βοΈ |
βοΈlog(N) |
[π ] Open |
Binary Tree Recursive: inOrderPrint() | π |
βοΈ |
βοΈlog(N) |
[π ] Open |
Binary Tree Recursive: postOrderPrint() | π |
βοΈ |
βοΈlog(N) |
[π ] Open |
Binary Tree Recursive: find(data) | π |
βοΈ |
βοΈlog(N) |
[π ] Open |
Binary Tree Recursive: delete() | π |
βοΈ |
βοΈlog(N) |
[π ] Open |
Binary Tree Iterative: insert(data) | π |
βοΈ |
βοΈ(N) |
[π ] Open |
Binary Tree Iterative: preOrderPrint() | π |
βοΈ |
βοΈ(N) |
[π ] Open |
Binary Tree Iterative: inOrderPrint() | π |
βοΈ |
βοΈ(N) |
[π ] Open |
Binary Tree Iterative: postOrderPrint() | π |
βοΈ |
βοΈ(N) |
[π ] Open |
AVL Tree | π |
[βπ» ] |
||
Fenwick Tree | π |
[βπ» ] |
||
Red-Black Tree | π |
[βπ» ] |
||
Segment Tree | π |
[βπ» ] |
Data Structure: Hash Table<Listnode>
Algorithm (operation) | Level | Done | Big βοΈ Notation |
---|---|---|---|
hash(key) | π |
[βπ» ] |
|
set(key, value) | π |
[βπ» ] |
|
delete(key) | π |
[βπ» ] |
|
get(key) | π |
[βπ» ] |
|
has(key) | π |
[βπ» ] |
|
getKeys() | π |
[βπ» ] |
|
getValues() | π |
[βπ» ] |
Data Structure: Trie
Algorithm (operation) | Level | Done | Big βοΈ Notation |
---|---|---|---|
addWord | π |
[βπ» ] |
|
deleteWord | π |
[βπ» ] |
Data Structure: Graph
Algorithm (operation) | Level | Done | Big βοΈ Notation |
---|---|---|---|
directed | π |
[βπ» ] |
|
undirected | π |
[βπ» ] |
mvn clean test