This week I learned how non comparison sorting like counting sort and radix sort can achieve linear time by using frequency tables and digit processing instead of comparisons. Dynamic programming helped me understand how breaking problems into overlapping subproblems leads to efficient solutions, especially in coin collection and coin row problems. Implementing Floyd’s algorithm strengthened my understanding of all pairs shortest paths and how intermediate vertices refine solutions. I also learned how greedy strategies like Prim’s algorithm build minimum spanning trees by making locally optimal choices. Overall, this week deepened my understanding of algorithm efficiency and structured problem solving.
