- Divide and conquer
- Dynamic programming
- Greedy algorithms
- Graph algorithms
- String matching
- Sorting
- Fast Fourier Transform
The aim is to implement all the algorithms and data structures discussed in the textbook Introduction to Algorithms by Thomas H. Cormen, et al. We will be working with both the third and fourth edition. Folders usually contain several versions of the same algorithm or data structure, in accordance with the different pseudocode and explanations in the textbook, or to show different implementations.
In addition, you will also find other algorithms and data structures that are not discussed or merely referenced in the book. All implementations will be in C, and will follow the pseudocode—if available—in the textbook as closely as possible, unless this results in a less efficient or unnecessarily complex implementation. I strive to make the code as transparent and economical as possible, and have it reflect the underlying reasoning. Brief explanations and summaries of the algorithms and data structures will be added as well. Contrary to the textbook, I will always use zero-based indexing. I will also link to helpful videos that explain the concepts in a more visual way when available.
Please refer to the license if you wish to use any of the code in this repository. Any images were created using Photoshop. If you find any errors or have any suggestions, please let me know.
Kindly note that this is very much a work in progress. It simply takes time to develop and test all the code and write the explanations. Updates will be made regularly.
CLRS³: Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to algorithms. MIT press.
CLRS⁴: Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to algorithms. MIT press.
CP: Halim, S., Halim, F., & Effendy, S. (2022) Competitive programming 4. Lulu Publishing.
EA: Kao, M.Y., 2016. Encyclopedia of Algorithms. Springer.
JE: Erickson, J. (2019). Algorithms. Independent Publisher.