|
6 | 6 | Algorithms and data structures are amongst the most fundamental ingredients in the recipe for efficient code and good software design; knowledge of how to create and design excellent algorithms is an essential skill required in becoming an exemplary programmer. The goal of this repository is to provide a complete and thorough explanation of the most common data structures and algorithms in the clearest possible way.
|
7 | 7 |
|
8 | 8 | # Data Structures
|
9 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=q4fnJZr8ztY)[Balanced Trees](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/balancedtree) |
10 |
| - * [Avl Tree (recursive)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/balancedtree/AVLTreeRecursive.java) |
11 |
| - * [Avl Tree (recursive, mildly optimized)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/balancedtree/AVLTreeRecursiveOptimized.java) |
12 |
| - * [Red Black Tree(recursive)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/balancedtree/RedBlackTree.java) |
13 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=JfSdGQdAzq8)[Binary Search Tree](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/binarysearchtree/BinarySearchTree.java) |
14 |
| -* [Splay Tree](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/binarysearchtree/SplayTree.java) |
15 |
| -* [Bloom Filter](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/bloomfilter) |
16 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=PEnFFiQe1pM)[Dynamic Array](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/dynamicarray) |
17 |
| - * [Dynamic array (integer only, fast)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/dynamicarray/IntArray.java) |
18 |
| - * [Dynamic array (generic)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/dynamicarray/DynamicArray.java) |
19 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=RgITNht_f4Q)[Fenwick Tree](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/fenwicktree)
8000
|
20 |
| - * [Fenwick Tree (range query, point updates)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/fenwicktree/FenwickTreeRangeQueryPointUpdate.java) |
21 |
| - * [Fenwick Tree (range update, point query)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/fenwicktree/FenwickTreeRangeUpdatePointQuery.java) |
22 |
| -* [Set](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/set) |
23 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=2E54GqF0H4s)[Hashtable](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/hashtable) |
24 |
| - * [Hashtable (double hashing)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/hashtable/HashTableDoubleHashing.java) |
25 |
| - * [Hashtable (linear probing)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/hashtable/HashTableLinearProbing.java) |
26 |
| - * [Hashtable (quadratic probing)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/hashtable/HashTableQuadraticProbing.java) |
27 |
| - * [Hashtable (separate chaining)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/hashtable/HashTableSeperateChaining.java) |
28 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=-Yn5DU0_-lw)[Linked List](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/linkedlist/DoublyLinkedList.java) |
29 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=wptevk0bshY)[Priority Queue](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/priorityqueue) |
30 |
| - * [Min Binary Heap](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/priorityqueue/BinaryHeap.java) |
31 |
| - * [Min Indexed Binary Heap (sorted key-value pairs, similar to hash-table)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/priorityqueue/MinIndexedBinaryHeap.java) |
32 |
| - * [Min D-Heap](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/priorityqueue/MinDHeap.java) |
33 |
| - * [:movie_camera:](https://www.youtube.com/watch?v=DT8xZ0Uf8wo)[Min Indexed D-Heap (sorted key-value pairs, similar to hash-table)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/priorityqueue/MinIndexedDHeap.java) |
34 |
| -* [Quad Tree [WIP]](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/quadtree/QuadTree.java) |
35 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=KxzhEQ-zpDc)[Queue](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/queue) |
36 |
| - * [Queue (integer only, fixed size, fast)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/queue/IntQueue.java) |
37 |
| - * [Queue (linked list, generic)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/queue/Queue.java) |
38 |
| -* [Segment Tree](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/segmenttree) |
39 |
| - * [Segment tree (array based, compact)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/segmenttree/CompactSegmentTree.java) |
40 |
| - * [Segment tree (pointer implementation)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/segmenttree/Node.java) |
41 |
| -* [Skip List [UNTESTED]](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/skiplist/SkipList.java) |
42 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=L3ud3rXpIxA)[Stack](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/stack) |
43 |
| - * [Stack (integer only, fixed size, fast)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/stack/IntStack.java) |
44 |
| - * [Stack (linked list, generic)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/stack/Stack.java) |
45 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=zqKlL3ZpTqs)[Suffix Array](https://github.com/williamfiset/data-structures/tree/master/com/williamfiset/datastructures/suffixarray) |
46 |
| - * [Suffix Array (O(n²logn) construction)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/suffixarray/SuffixArraySlow.java) |
47 |
| - * [Suffix Array (O(nlog²(n)) construction)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/suffixarray/SuffixArrayMed.java) |
48 |
| - * [Suffix Array (O(nlog(n)) construction)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/suffixarray/SuffixArrayFast.java) |
49 |
| -* [Trie](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/trie/Trie.java) |
50 |
| -* [:movie_camera:](https://www.youtube.com/watch?v=ibjEGG7ylHk)[Union Find](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/datastructures/unionfind/UnionFind.java) |
| 9 | +* [:movie_camera:](https://www.youtube.com/watch?v=q4fnJZr8ztY)[Balanced Trees](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/balancedtree) |
| 10 | + * [Avl Tree (recursive)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/balancedtree/AVLTreeRecursive.java) |
| 11 | + * [Avl Tree (recursive, mildly optimized)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/balancedtree/AVLTreeRecursiveOptimized.java) |
| 12 | + * [Red Black Tree(recursive)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/balancedtree/RedBlackTree.java) |
| 13 | +* [:movie_camera:](https://www.youtube.com/watch?v=JfSdGQdAzq8)[Binary Search Tree](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/binarysearchtree/BinarySearchTree.java) |
| 14 | +* [Splay Tree](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/binarysearchtree/SplayTree.java) |
| 15 | +* [Bloom Filter](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/bloomfilter) |
| 16 | +* [:movie_camera:](https://www.youtube.com/watch?v=PEnFFiQe1pM)[Dynamic Array](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/dynamicarray) |
| 17 | + * [Dynamic array (integer only, fast)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/dynamicarray/IntArray.java) |
| 18 | + * [Dynamic array (generic)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/dynamicarray/DynamicArray.java) |
| 19 | +* [:movie_camera:](https://www.youtube.com/watch?v=RgITNht_f4Q)[Fenwick Tree](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/fenwicktree) |
| 20 | + * [Fenwick Tree (range query, point updates)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/fenwicktree/FenwickTreeRangeQueryPointUpdate.java) |
| 21 | + * [Fenwick Tree (range update, point query)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/fenwicktree/FenwickTreeRangeUpdatePointQuery.java) |
| 22 | +* [Set](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/set) |
| 23 | +* [:movie_camera:](https://www.youtube.com/watch?v=2E54GqF0H4s)[Hashtable](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/hashtable) |
| 24 | + * [Hashtable (double hashing)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/hashtable/HashTableDoubleHashing.java) |
| 25 | + * [Hashtable (linear probing)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/hashtable/HashTableLinearProbing.java) |
| 26 | + * [Hashtable (quadratic probing)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/hashtable/HashTableQuadraticProbing.java) |
| 27 | + * [Hashtable (separate chaining)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/hashtable/HashTableSeperateChaining.java) |
| 28 | +* [:movie_camera:](https://www.youtube.com/watch?v=-Yn5DU0_-lw)[Linked List](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/linkedlist/DoublyLinkedList.java) |
| 29 | +* [:movie_camera:](https://www.youtube.com/watch?v=wptevk0bshY)[Priority Queue](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/priorityqueue) |
| 30 | + * [Min Binary Heap](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/priorityqueue/BinaryHeap.java) |
| 31 | + * [Min Indexed Binary Heap (sorted key-value pairs, similar to hash-table)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/priorityqueue/MinIndexedBinaryHeap.java) |
| 32 | + * [Min D-Heap](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/priorityqueue/MinDHeap.java) |
| 33 | + * [:movie_camera:](https://www.youtube.com/watch?v=DT8xZ0Uf8wo)[Min Indexed D-Heap (sorted key-value pairs, similar to hash-table)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/priorityqueue/MinIndexedDHeap.java) |
| 34 | +* [Quad Tree [WIP]](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/quadtree/QuadTree.java) |
| 35 | +* [:movie_camera:](https://www.youtube.com/watch?v=KxzhEQ-zpDc)[Queue](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/queue) |
| 36 | + * [Queue (integer only, fixed size, fast)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/queue/IntQueue.java) |
| 37 | + * [Queue (linked list, generic)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/queue/Queue.java) |
| 38 | +* [Segment Tree](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/segmenttree) |
| 39 | + * [Segment tree (array based, compact)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/segmenttree/CompactSegmentTree.java) |
| 40 | + * [Segment tree (pointer implementation)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/segmenttree/Node.java) |
| 41 | +* [Skip List [UNTESTED]](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/skiplist/SkipList.java) |
| 42 | +* [:movie_camera:](https://www.youtube.com/watch?v=L3ud3rXpIxA)[Stack](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/stack) |
| 43 | + * [Stack (integer only, fixed size, fast)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/stack/IntStack.java) |
| 44 | + * [Stack (linked list, generic)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/stack/Stack.java) |
| 45 | +* [:movie_camera:](https://www.youtube.com/watch?v=zqKlL3ZpTqs)[Suffix Array](https://github.com/williamfiset/algorithms/tree/master/com/williamfiset/algorithms/datastructures/suffixarray) |
| 46 | + * [Suffix Array (O(n²logn) construction)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/suffixarray/SuffixArraySlow.java) |
| 47 | + * [Suffix Array (O(nlog²(n)) construction)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/suffixarray/SuffixArrayMed.java) |
| 48 | + * [Suffix Array (O(nlog(n)) construction)](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/suffixarray/SuffixArrayFast.java) |
| 49 | +* [Trie](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/trie/Trie.java) |
| 50 | +* [:movie_camera:](https://www.youtube.com/watch?v=ibjEGG7ylHk)[Union Find](https://github.com/williamfiset/algorithms/blob/master/com/williamfiset/algorithms/datastructures/unionfind/UnionFind.java) |
51 | 51 |
|
52 | 52 | # Dynamic Programming
|
53 | 53 | * [Coin change problem](https://github.com/williamfiset/Algorithms/blob/master/com/williamfiset/algorithms/dp/CoinChange.java) **- O(nW)**
|
|
0 commit comments