Brute force tries every possible solution and picks the best. For n items, this often means O(2n) or O(n!) time. It may also use O(n) to O(2n) space to store candidates. Unusable for large inputs.
Greedy makes one choice per step without looking back. It gives O(n) or O(nlogn) time, depending on whether sorting is needed. Space is usually O(1) extra beyond the input.
The tradeoff: brute force always finds the optimum, greedy only works when the greedy choice property holds. But when greedy works, it is dramatically faster.