Greedy algorithms make locally optimal choices at each step to arrive at a global optimum. The fractional knapsack problem uses a greedy approach of selecting items with the highest value per unit weight. Huffman coding also uses a greedy approach by iteratively combining the two least frequent symbols into a new node, building a prefix tree that assigns shorter codes to more frequent symbols. Both problems can be solved in O(n log n) time by using priority queues to efficiently select the best options at each step.