Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 37 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,41 @@
# Data Structures & Algorithms

This repository contains implementation of some fundamental data structures and algorithms in Computer Science. It is
primarily used as a teaching resource and is currently being developed by ex-2040s students.
This repository contains implementation and discussion notes (intuition, applications, analysis)
of some fundamental data structures and algorithms in Computer Science. <br>
It is aligned with [CS2040s](https://nusmods.com/courses/CS2040S/data-structures-and-algorithms) syllabus taught at NUS.

The project uses Gradle and the structure is optimised for IntelliJ IDEA since implementation are mostly written in
Java.
The work here is continually being developed by CS2040s Teaching Assistants(TAs) and ex-2040s students.
Lecture content has been covered and future plans include deeper discussion into the tougher parts of tutorials.

**Note**: This is still being developed. Those below with links mean that they are complete (alongside testing). We
project to complete CS2040s course content by November and along the way, add interesting algorithms/problems. We are
hopeful that the subsequent batches of students (from AY23/24 S2) will benefit greatly from this.
The project's structure is optimised for IntelliJ IDEA as per the course's preferred IDE.
Gradle is used for development.

If you wish to contribute, do drop an email at andre_lin@u.nus.edu.

## Full List of Implementation (in alphabetical order):

## Structures
## Full List (in alphabetical order):

## Data Structures
- Adelson-Velskii and Landis (AVL) Binary Search Tree
- Disjoint Set / Union Find
* Quick Find
* Weighted Union
* Path compression
- [Disjoint Set / Union Find](src/main/java/dataStructures/disjointSet)
* [Quick Find](src/main/java/dataStructures/disjointSet/quickFind)
* [Weighted Union]((src/main/java/dataStructures/disjointSet)/weightedUnion)
* Path compression
- [Hashing](src/main/java/dataStructures/hashSet)
* [Chaining](src/main/java/dataStructures/hashSet/chaining)
* [Open Addressing](src/main/java/dataStructures/hashSet/openAddressing)
- [Heap](src/main/java/dataStructures/heap)
* Max heap implementation
* Max heap implementation
- [Linked List](src/main/java/dataStructures/linkedList)
- LRU Cache
- Minimum Spanning Tree
- [Queue](src/main/java/dataStructures/queue)
- [Deque](src/main/java/dataStructures/queue/Deque)
- [Monotonic Queue](src/main/java/dataStructures/queue/monotonicQueue)
- Segment Tree
* Array implementation
* TreeNode implementation
- [Stack](src/main/java/dataStructures/stack)
- Trie

## Algorithms

- [Counting Sort](src/main/java/algorithms/sorting/countingSort)
- [Cyclic Sort](src/main/java/algorithms/sorting/cyclicSort)
* [Special case](src/main/java/algorithms/sorting/cyclicSort/simple) of O(n) time complexity
Expand All @@ -54,17 +52,17 @@ If you wish to contribute, do drop an email at andre_lin@u.nus.edu.
* [Lomuto's](src/main/java/algorithms/sorting/quickSort/lomuto)
* [Paranoid](src/main/java/algorithms/sorting/quickSort/paranoid)
* [3-way Partitioning](src/main/java/algorithms/sorting/quickSort/threeWayPartitioning)
- Radix Sort
- [Radix Sort](src/main/java/algorithms/sorting/radixSort/)

## Short-cut to CS2040S Material

1. Basic structures
* [Linked List](src/main/java/dataStructures/linkedList)
* [Stack](src/main/java/dataStructures/stack)
* [Queue](src/main/java/dataStructures/queue)
2. [Binary Search](src/main/java/algorithms/binarySearch)
* Peak Finding
* Template
* Simple Version
* Universal Version
3. Sorting
* [Bubble](src/main/java/algorithms/sorting/bubbleSort)
* [Insertion](src/main/java/algorithms/sorting/insertionSort)
Expand All @@ -74,37 +72,44 @@ If you wish to contribute, do drop an email at andre_lin@u.nus.edu.
4. Trees
* [Binary search tree](src/main/java/dataStructures/binarySearchTree)
* AVL-tree
* Kd-tree
* Interval tree
* Kd-tree (**WIP**)
* Interval tree (**WIP**)
* Augmented tree for orthogonal range searching
* Red-Black Tree
* ab-Tree
5. [Binary Heap](src/main/java/dataStructures/heap)
* Max heap implementation
6. Disjoint Set / Union Find
* Quick Find
* Weighted Union
* Path compression
6. [Disjoint Set / Union Find](src/main/java/dataStructures/disjointSet)
* [Quick Find](src/main/java/dataStructures/disjointSet/quickFind)
* [Weighted Union](src/main/java/dataStructures/disjointSet/weightedUnion)
* Path compression
7. [Hashing](src/main/java/dataStructures/hashSet)
* [Chaining](src/main/java/dataStructures/hashSet/chaining)
* [Open Addressing](src/main/java/dataStructures/hashSet/openAddressing)
* Double Hashing
* Bloom filter
8. Basic graphs
* Bloom filter (**WIP**)
8. Basic graphs (**WIP**)
* Depth-first search
* Breadth-first search
9. Graphs
* Bellman-ford
* Dijkstra
* Directed acyclic graphs
* Directed acyclic graphs algorithms (**WIP**)
* Post-order DFS
* Kahn's
* Floyd Warshall (**WIP**)
10. Minimum spanning tree
* Prim's
* Kruskal's

## Running Custom Inputs

See [here](scripts/README.md).

## Contributors
## Disclaimer
While our team of TAs and students have diligently verified the correctness of our code, there might still be
some discrepancies or deviation from lecture content (perhaps due to new changes).
In which case, **you are strongly advised to raise it up to us or consult your TA** regarding any suspicions
on the use of the information shared here.

## Contributors
See the [team](docs/team/profiles.md)!
3 changes: 0 additions & 3 deletions src/main/README.md

This file was deleted.

Loading