Time complexity: O(n log(k))
Space complexity: O(k)
Time complexity: Θ(n) ~ O(n^2)
Space complexity: O(1)