1
1
# Data Structures & Algorithms
2
2
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.
5
6
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 .
8
9
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.
12
12
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):
18
14
15
+ ## Data Structures
19
16
- 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
24
21
- [ Hashing] ( src/main/java/dataStructures/hashSet )
25
22
* [ Chaining] ( src/main/java/dataStructures/hashSet/chaining )
26
23
* [ Open Addressing] ( src/main/java/dataStructures/hashSet/openAddressing )
27
24
- [ Heap] ( src/main/java/dataStructures/heap )
28
- * Max heap implementation
25
+ * Max heap implementation
29
26
- [ Linked List] ( src/main/java/dataStructures/linkedList )
30
27
- LRU Cache
31
28
- Minimum Spanning Tree
32
29
- [ Queue] ( src/main/java/dataStructures/queue )
30
+ - [ Deque] ( src/main/java/dataStructures/queue/Deque )
31
+ - [ Monotonic Queue] ( src/main/java/dataStructures/queue/monotonicQueue )
33
32
- Segment Tree
34
33
* Array implementation
35
34
* TreeNode implementation
36
35
- [ Stack] ( src/main/java/dataStructures/stack )
37
36
- Trie
38
37
39
38
## Algorithms
40
-
41
39
- [ Counting Sort] ( src/main/java/algorithms/sorting/countingSort )
42
40
- [ Cyclic Sort] ( src/main/java/algorithms/sorting/cyclicSort )
43
41
* [ 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] .
54
52
* [ Lomuto's] ( src/main/java/algorithms/sorting/quickSort/lomuto )
55
53
* [ Paranoid] ( src/main/java/algorithms/sorting/quickSort/paranoid )
56
54
* [ 3-way Partitioning] ( src/main/java/algorithms/sorting/quickSort/threeWayPartitioning )
57
- - Radix Sort
55
+ - [ Radix Sort] ( src/main/java/algorithms/sorting/radixSort/ )
58
56
59
57
## Short-cut to CS2040S Material
60
-
61
58
1 . Basic structures
62
59
* [ Linked List] ( src/main/java/dataStructures/linkedList )
63
60
* [ Stack] ( src/main/java/dataStructures/stack )
64
61
* [ Queue] ( src/main/java/dataStructures/queue )
65
62
2 . [ Binary Search] ( src/main/java/algorithms/binarySearch )
66
63
* Peak Finding
67
- * Template
64
+ * Simple Version
65
+ * Universal Version
68
66
3 . Sorting
69
67
* [ Bubble] ( src/main/java/algorithms/sorting/bubbleSort )
70
68
* [ Insertion] ( src/main/java/algorithms/sorting/insertionSort )
@@ -74,37 +72,44 @@ If you wish to contribute, do drop an email at
[email protected] .
74
72
4 . Trees
75
73
* [ Binary search tree] ( src/main/java/dataStructures/binarySearchTree )
76
74
* AVL-tree
77
- * Kd-tree
78
- * Interval tree
75
+ * Kd-tree ( ** WIP ** )
76
+ * Interval tree ( ** WIP ** )
79
77
* Augmented tree for orthogonal range searching
80
78
* Red-Black Tree
81
79
* ab-Tree
82
80
5 . [ Binary Heap] ( src/main/java/dataStructures/heap )
83
81
* 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
88
86
7 . [ Hashing] ( src/main/java/dataStructures/hashSet )
89
87
* [ Chaining] ( src/main/java/dataStructures/hashSet/chaining )
90
88
* [ Open Addressing] ( src/main/java/dataStructures/hashSet/openAddressing )
91
89
* Double Hashing
92
- * Bloom filter
93
- 8 . Basic graphs
90
+ * Bloom filter ( ** WIP ** )
91
+ 8 . Basic graphs ( ** WIP ** )
94
92
* Depth-first search
95
93
* Breadth-first search
96
94
9 . Graphs
97
95
* Bellman-ford
98
96
* Dijkstra
99
- * Directed acyclic graphs
97
+ * Directed acyclic graphs algorithms (** WIP** )
98
+ * Post-order DFS
99
+ * Kahn's
100
+ * Floyd Warshall (** WIP** )
100
101
10 . Minimum spanning tree
101
102
* Prim's
102
103
* Kruskal's
103
104
104
105
## Running Custom Inputs
105
-
106
106
See [ here] ( scripts/README.md ) .
107
107
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.
109
113
114
+ ## Contributors
110
115
See the [ team] ( docs/team/profiles.md ) !
0 commit comments