A library that contains basic data structures and algorithm implementations in Java for the purposes of the Data Structure + Algorithms course @ FMI, SU.
Quick summary of everything studied in the course + extra algorithms can be found here - http://bigocheatsheet.com/
The following table summarizes what we already know about the algorithmic complexity of the basic operations on several data structures.
| Data structure | Get | Append | Insert | RemoveAt | Search | Random Access? |
|---|---|---|---|---|---|---|
| Sequential List (Dynamic Array) | O(1) |
O(1)A |
O(n) |
O(n) |
O(n) |
True |
| Linked List | O(n) |
O(1) |
O(1) |
O(1) |
O(n) |
True |
| Stack | O(1) |
O(1) |
- |
O(1) |
- |
False |
| Queue | O(1) |
O(1) |
- |
O(1) |
- |
False |
| HashMap | O(1) |
O(1)A |
O(1)A |
O(1) |
O(1) |
False |
| BST | O(log n) |
O(log n) |
O(log n) |
O(log n) |
O(log n) |
True |
- Subscript A means that the complexity is amortized.
The following table summarizes the standard implementations (if any) of several data structures data structures in the most popular programming languages' standard libraries.
| Language | SequentialList | LinkedList | Stack | Queue | HashMap | Set | BST | Sorting algorithm |
|---|---|---|---|---|---|---|---|---|
| C++ | vector |
list |
stack |
queue |
unordered_map |
unordered_set |
map |
introsort |
| Java | ArrayList |
LinkedList |
Stack |
Queue |
HashMap |
HashSet |
- |
timsort |
| C# | List |
LinkedList |
Stack |
Queue |
Dictionary |
HashSet |
SortedDictionary |
introsort |
| Python | list |
- |
- |
- |
dict |
set |
OrderedDict |
timsort |
| JavaScript | Array |
- |
Array |
Array |
Object |
- |
- |
NDS |
- NDS - Not Described in Standard (i.e. the language has multiple implementations that use different algorithms)