Return 3 smallest elements in a list How would we find the three smallest elements in a list and return it as a tuple (a,b,c) using divide and conquer?
So far I've considered the following:
def sm(L):
    # base
    if len(L) == 3:
        return L sorted
    else:
        # divide  

How would I divide the list so that we guarantee the list to be of size 3 and be in the base case?
In the divide and conquer approach, we break the problem into subproblems and we try to solve these subproblems.
So, you can divide your problem into two subproblems till you reach one element. Now you can combine these subproblems but in each step, you know the 3 smallest elements of these subproblems.
Fortunately, Merge Sort uses the divide and conquer idea to sort an array. Please note that in each step of combining subproblems, it is sufficient to hold only three elements of each sub-lists. So, it is not necessary to sort all elements. (Just the 3 smallest elements)
Check Merge sort here:
https://www.geeksforgeeks.org/merge-sort/