The intention of this repository is to have fun and improve my skills on Algorithm Analysis and Design, by implementing algorithms and solving proposed problems from the books.
I choose Java™ as the implementation language because I purchase a copy of the book "Algorithms, 4th Edition" by Robert Sedgewick and Kevin Wayne and its book site is full of resources for learning and practicing.
- Technologies
- Data Sets
- Compile and Test
- Book Standard Library
- Solution to Algorithms Exercises
- License
- References
I opted to use Java™ Platform, Standard Edition 8 API Specification and IntelliJ IDEA Community.
Data files used to test the algorithms have not been versioned in this repository, but this can be done with Git Large File Storage (LFS).
Click on the section Data in the booksite to get one by one or download them all as one zipped big file (1GB approx.): introcs-data.zip.
After downloading the file, unzip it in a folder called data in the project root folder:
$ unzip introcs-data.zip -d project-root-folder/dataObs.: In my case project-root-folder is ~/Projects/Java/Algorithms.
Follow this steps in the project root folder to versioning the files (the same as git lfs site):
-
Download and install the Git command line extension.
-
Once downloaded and installed, set up Git LFS and its respective hooks by running:
$ git lfs install- Select the file types you'd like Git LFS to manage (or directly edit your .gitattributes). You can configure additional file extensions at anytime.
$ git lfs track "*.txt"- Make sure .gitattributes is tracked
$ git add .gitattributesFinally, commit and push to GitHub as you normally would.
Obs.: See Git Large File Storage (LFS) to know more.
To compile and run the algorithms, just run in console:
$ ./compile.shTo compile the tests, just run in console:
$ ./run-tests.shA great portion of the code uses the books standard library algs4.jar that is versioned in the repository under lib folder.
To get more details about it, access the section Code of the booksite or the complete javadoc documentation.
This repository DOES NOT CONTAIN any copy / reproduction of the content available in the books "Algorithms, 4th Edition" by Robert Sedgewick and Kevin Wayne, Algorithms Illuminated: Part 1: The Basics, Algorithms Illuminated (Part 2): Graph Algorithms and Data Structures (Volume 2), Introduction to Algorithms 3rd Edition (The MIT Press), Algorithm Complexity 3th Edition (Brazilian portuguese), Discrete Mathematics for Computing and Informatics (Brazilian portuguese), Learning Discrete Math with Exercise (Brazilian portuguese) and Refactoring - Improving the Design of Existing Code for commercial purposes.
It has only my own solutions for the proposed problems in the books chapters with the intention of learning and enhancing my skill set.
- "Algorithms, 4th Edition" by Robert Sedgewick and Kevin Wayne
- Algorithms Illuminated: Part 1: The Basics
- Algorithms Illuminated (Part 2): Graph Algorithms and Data Structures (Volume 2)
- Introduction to Algorithms 3rd Edition (The MIT Press)
- Algorithm Complexity 3th Edition (Brazilian portuguese)
- Refactoring - Improving the Design of Existing Code
- Discrete Mathematics for Computing and Informatics (Brazilian portuguese)
- Learning Discrete Math with Exercise (Brazilian portuguese)
- "Mathematics for Computer Science" by Lehman and Leighton
- Wikipedia
- MIT OCW
- Java™ Platform, Standard Edition 8 API Specification
- IntelliJ IDEA – the Leading Java and Kotlin IDE
Please see the license agreement.
