11# Data Structures & Algorithms
22
3- This repository contains implementation of some fundamental data structures and algorithms in Computer Science. It is
4- primarily used as a teaching resource and is currently being developed by ex-2040s students.
3+ This repository contains implementation and discussion notes (intuition, applications, analysis)
4+ of some fundamental data structures and algorithms in Computer Science. <br >
5+ It is aligned with [ CS2040s] ( https://nusmods.com/courses/CS2040S/data-structures-and-algorithms ) syllabus taught at NUS.
56
6- The project uses Gradle and the structure is optimised for IntelliJ IDEA since implementation are mostly written in
7- Java .
7+ The work here is continually being developed by CS2040s Teaching Assistants(TAs) and ex-2040s students.
8+ Lecture content has been covered and future plans include deeper discussion into the tougher parts of tutorials .
89
9- ** Note** : This is still being developed. Those below with links mean that they are complete (alongside testing). We
10- project to complete CS2040s course content by November and along the way, add interesting algorithms/problems. We are
11- hopeful that the subsequent batches of students (from AY23/24 S2) will benefit greatly from this.
10+ The project's structure is optimised for IntelliJ IDEA as per the course's preferred IDE.
11+ Gradle is used for development.
1212
13- If you wish to contribute, do drop an email at
[email protected] .
14-
15- ## Full List of Implementation (in alphabetical order):
16-
17- ## Structures
13+ ## Full List (in alphabetical order):
1814
15+ ## Data Structures
1916- Adelson-Velskii and Landis (AVL) Binary Search Tree
20- - Disjoint Set / Union Find
21- * Quick Find
22- * Weighted Union
23- * Path compression
17+ - [ Disjoint Set / Union Find] ( src/main/java/dataStructures/disjointSet )
18+ * [ Quick Find] ( src/main/java/dataStructures/disjointSet/quickFind )
19+ * [ Weighted Union] ( (src/main/java/dataStructures/disjointSet)/weightedUnion )
20+ * Path compression
2421- [ Hashing] ( src/main/java/dataStructures/hashSet )
2522 * [ Chaining] ( src/main/java/dataStructures/hashSet/chaining )
2623 * [ Open Addressing] ( src/main/java/dataStructures/hashSet/openAddressing )
2724- [ Heap] ( src/main/java/dataStructures/heap )
28- * Max heap implementation
25+ * Max heap implementation
2926- [ Linked List] ( src/main/java/dataStructures/linkedList )
3027- LRU Cache
3128- Minimum Spanning Tree
3229- [ Queue] ( src/main/java/dataStructures/queue )
30+ - [ Deque] ( src/main/java/dataStructures/queue/Deque )
31+ - [ Monotonic Queue] ( src/main/java/dataStructures/queue/monotonicQueue )
3332- Segment Tree
3433 * Array implementation
3534 * TreeNode implementation
3635- [ Stack] ( src/main/java/dataStructures/stack )
3736- Trie
3837
3938## Algorithms
40-
4139- [ Counting Sort] ( src/main/java/algorithms/sorting/countingSort )
4240- [ Cyclic Sort] ( src/main/java/algorithms/sorting/cyclicSort )
4341 * [ Special case] ( src/main/java/algorithms/sorting/cyclicSort/simple ) of O(n) time complexity
@@ -54,17 +52,17 @@ If you wish to contribute, do drop an email at
[email protected] .
5452 * [ Lomuto's] ( src/main/java/algorithms/sorting/quickSort/lomuto )
5553 * [ Paranoid] ( src/main/java/algorithms/sorting/quickSort/paranoid )
5654 * [ 3-way Partitioning] ( src/main/java/algorithms/sorting/quickSort/threeWayPartitioning )
57- - Radix Sort
55+ - [ Radix Sort] ( src/main/java/algorithms/sorting/radixSort/ )
5856
5957## Short-cut to CS2040S Material
60-
61581 . Basic structures
6259 * [ Linked List] ( src/main/java/dataStructures/linkedList )
6360 * [ Stack] ( src/main/java/dataStructures/stack )
6461 * [ Queue] ( src/main/java/dataStructures/queue )
65622 . [ Binary Search] ( src/main/java/algorithms/binarySearch )
6663 * Peak Finding
67- * Template
64+ * Simple Version
65+ * Universal Version
68663 . Sorting
6967 * [ Bubble] ( src/main/java/algorithms/sorting/bubbleSort )
7068 * [ Insertion] ( src/main/java/algorithms/sorting/insertionSort )
@@ -74,37 +72,44 @@ If you wish to contribute, do drop an email at
[email protected] .
74724 . Trees
7573 * [ Binary search tree] ( src/main/java/dataStructures/binarySearchTree )
7674 * AVL-tree
77- * Kd-tree
78- * Interval tree
75+ * Kd-tree ( ** WIP ** )
76+ * Interval tree ( ** WIP ** )
7977 * Augmented tree for orthogonal range searching
8078 * Red-Black Tree
8179 * ab-Tree
82805 . [ Binary Heap] ( src/main/java/dataStructures/heap )
8381 * Max heap implementation
84- 6 . Disjoint Set / Union Find
85- * Quick Find
86- * Weighted Union
87- * Path compression
82+ 6 . [ Disjoint Set / Union Find] ( src/main/java/dataStructures/disjointSet )
83+ * [ Quick Find] ( src/main/java/dataStructures/disjointSet/quickFind )
84+ * [ Weighted Union] ( src/main/java/dataStructures/disjointSet/weightedUnion )
85+ * Path compression
88867 . [ Hashing] ( src/main/java/dataStructures/hashSet )
8987 * [ Chaining] ( src/main/java/dataStructures/hashSet/chaining )
9088 * [ Open Addressing] ( src/main/java/dataStructures/hashSet/openAddressing )
9189 * Double Hashing
92- * Bloom filter
93- 8 . Basic graphs
90+ * Bloom filter ( ** WIP ** )
91+ 8 . Basic graphs ( ** WIP ** )
9492 * Depth-first search
9593 * Breadth-first search
96949 . Graphs
9795 * Bellman-ford
9896 * Dijkstra
99- * Directed acyclic graphs
97+ * Directed acyclic graphs algorithms (** WIP** )
98+ * Post-order DFS
99+ * Kahn's
100+ * Floyd Warshall (** WIP** )
10010110 . Minimum spanning tree
101102 * Prim's
102103 * Kruskal's
103104
104105## Running Custom Inputs
105-
106106See [ here] ( scripts/README.md ) .
107107
108- ## Contributors
108+ ## Disclaimer
109+ While our team of TAs and students have diligently verified the correctness of our code, there might still be
110+ some discrepancies or deviation from lecture content (perhaps due to new changes).
111+ In which case, ** you are strongly advised to raise it up to us or consult your TA** regarding any suspicions
112+ on the use of the information shared here.
109113
114+ ## Contributors
110115See the [ team] ( docs/team/profiles.md ) !
0 commit comments