A repository for practicing DS/Algo in Python, based on Rance D. Necaise^1 and Michael T. Goodrich et al.^2
Folders | Corresponding Directories ^1 | ^2 |
---|---|---|
Chapter 1 | Abstract Data Types | Python Primer |
Chapter 2 | Arrays | Object-Oriented Programming |
Chapter 3 | Sets and Maps | Algorithm Analysis |
Chapter 4 | Algorithm Analysis | Recursion |
Chapter 5 | Searching and Sorting | Array-Based Sequences |
Chapter 6 | Linked Structures | Stacks, Queues, and Deques |
Chapter 7 | Stacks | Linked Lists |
Chapter 8 | Queues | Trees |
Chapter 9 | Advanced Linked Lists | Priority Queues |
Chapter 10 | Recursion | Maps, Hash Tables, and Skip Lists |
Chapter 11 | Hash Tables | Search Trees |
Chapter 12 | Advanced Sorting | Sorting and Selection |
Chapter 13 | Binary Trees | Text Processing |
Chapter 14 | Search Trees | Graph Algorithms |
Chapter 15 | Memory Management and B-Trees |
After cloning the repository, you may run the programs using PyCharm or an IDE/editor of your choice.
-
Python 3.6 is used up until commit
36f2d11
. Subsequent commits use Python 3.10 (or higher) features. -
Commit
4466df5
uses__future__.annotations
^3 to set recursive type-hinting (requires Python 3.7 or higher). -
progression.py
uses the@override
decorator^4 to emphasize polymorphism.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the GNU GPL v3 License.
- Hat tip to anyone whose code was used
-
Necaise, R. D. (2011). Data Structures and Algorithms using Python. Hoboken, NJ, USA: Wiley.
-
Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2013). Data Structures and Algorithms in Python. (B. L. Golub, Ed.) Hoboken, NJ, USA: Wiley.
-
__future__
Statement Definitions. Retreived from the Official Python Documentation: https://docs.python.org/3.11/library/__future__.html -
Korpela, M. (6 August 2023).
overrides
. Retrieved from PyPI: https://pypi.org/project/overrides/ -
Stroud, K. A., & Booth, D. J. (2020). Engineering Mathematics (8th ed.). London, UK: Red Globe Press (Macmillian).
-
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). Massachusetts, USA: MIT Press.
-
Lutz, M. (2013). Learning Python (5th ed.). Sebastopol, CA, USA: O'Reilly Media, Inc.
-
Levitin, A. (2012). Introduction To The Design & Analysis of Algorithms (3rd ed.). Essex, UK: Pearson Education.
-
Gusfield, D. (1997). Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. Cambridge University Press.
-
Tustumi, W. H. A., Gog, S., Telles, G. P., & Louza, F. A. (2016). An improved algorithm for the all-pairs suffixprefix problem. Journal of Discrete Algorithms, 37(C), 34–43.
-
Kim, D.K., Kim, M. & Park, H. Linearized Suffix Tree: an Efficient Index Data Structure with the Capabilities of Suffix Trees and Suffix Arrays. Algorithmica 52, 350–377 (2008).
-
Nong, G., Zhang, S., & Chan, W. H. (2009). Linear SAIS (Suffix Array Construction by Almost Pure Induced-Sorting). 2009 Data Compression Conference (pp. 193-202). Snowbird, UT, USA: IEEE. doi:10.1109/DCC.2009.42
-
Li, Z., Li, J., & Huo, H. (2018). Optimal In-Place Suffix Sorting. Tsinghua University, IIIS. Beijing: arXiv. arXiv:1610.08305v6
-
Guruprasad, H. S. (25 June 2020). Horspool Algorithm. Retrieved from YouTube: https://www.youtube.com/watch?v=W4h6555g5qo
-
Kettani, H. (2024). Space & Time Tradeoffs: Boyer-Moore Algorithm. CSC 3323 Analysis of Algorithms. Morocco.
-
Ramesh, B. (21 April 2020). Boyer-Moore-Horspool Algorithm. Retrieved from YouTube: https://youtu.be/4Oj_ESzSNCk
-
Langmead, Ben. (2024). Suffix-based indexing data structures: learning materials. figshare. Collection. https://doi.org/10.6084/m9.figshare.c.7205547
-
Harris, E. (27 March 2020). SAIS (Suffix Array Induced Sorting) Part 1. Retrieved from YouTube: https://www.youtube.com/watch?v=yb0Os_MTU_4
-
Lu, F. (25 March 2024). Longest Repeated Substring in Linear Time DC3 + LCP. Retireved from YouTube: https://www.youtube.com/watch?v=H2vGH_6p6GU