My solutions to assignments from Princeton University's Algorithms course (Algorithms Part I). The course covers fundamental data structures and algorithms with applications in sorting, searching, graphs, and geometric problems.
├── Prev Modules/
│ ├── Module 1/ # Introduction to Java
│ ├── Module 2/ # Union-Find & Percolation
│ ├── Module 4/ # Stacks & Queues
│ ├── Module 6/ # Sorting & Collinear Points
│ ├── Module 8/ # Priority Queues & 8-Puzzle
│ └── Module 11/ # Geometric Search & Kd-Trees
└── src/
- HelloWorld.java - Basic "Hello, World" program
- HelloGoodbye.java - Command-line argument handling
- RandomWord.java - Reservoir sampling algorithm
- Percolation.java - Models percolation using weighted quick-union
- PercolationStats.java - Monte Carlo simulation for percolation threshold estimation
- Deque.java - Double-ended queue implementation using linked list
- RandomizedQueue.java - Randomized queue with uniform random selection
- Permutation.java - Client program for random k-permutations
- Point.java - 2D point implementation with comparators
- BruteCollinearPoints.java - Brute-force algorithm to find collinear points
- FastCollinearPoints.java - Efficient sorting-based algorithm for collinear points
- Board.java - N×N sliding puzzle board with Manhattan and Hamming distances
- Solver.java - A* search algorithm to solve the 8-puzzle problem
- PointSET.java - Brute-force 2D point set using SET data structure
- KdTree.java - 2D tree for efficient range search and nearest-neighbor queries
All assignments use Princeton's standard library (algs4.jar
) for:
- Data structures (SET, MinPQ, WeightedQuickUnionUF)
- Utilities (StdIn, StdOut, StdDraw, StdRandom, StdStats)