def nest_qsort(tpl, colnum, reverse=False):
    """
    Deze functie sorteert de geneste tuple zoals beschreven in de README.md
    Het algoritme wat we gebruiken is quicksort, als we lineair gaan sorteren is het met een grote dataset niet te doen
    """

    small = []
    same = []
    large = []

    if len(tpl) > 1:
        pivot = tpl[0][colnum]
        if reverse:
            for x in tpl:
                if x[colnum] > pivot:
                    small.append(x)
                elif x[colnum] == pivot:
                    same.append(x)
                elif x[colnum] < pivot:
                    large.append(x)
        else:
            for x in tpl:
                if x[colnum] < pivot:
                    small.append(x)
                elif x[colnum] == pivot:
                    same.append(x)
                elif x[colnum] > pivot:
                    large.append(x)
        return nest_qsort(small, colnum, reverse) + same + nest_qsort(large, colnum, reverse)
    else:
        return tpl


def qsort(tpl, reverse=False):
    """
    Deze functie kan een lijst of tuple met waardes sorteren
    Het algoritme wat we gebruiken is quicksort, als we lineair gaan sorteren is het met een grote dataset niet te doen
    """

    small = []
    same = []
    large = []

    if len(tpl) > 1:
        pivot = tpl[0]
        if reverse:
            for x in tpl:
                if x > pivot:
                    small.append(x)
                elif x == pivot:
                    same.append(x)
                elif x < pivot:
                    large.append(x)
        else:
            for x in tpl:
                if x < pivot:
                    small.append(x)
                elif x == pivot:
                    same.append(x)
                elif x > pivot:
                    large.append(x)
        return qsort(small, reverse) + same + qsort(large, reverse)
    else:
        return tpl


def nest_search(lst, word):
    found = []  # lege lijst

    for x in lst:  # voor elke nest in de lijst
        if word.lower() in x[1].lower():  # als de keywordt overkomt met de naam van de app
            found.append(x)  # app nest opslaan in found

    return found  # return de lijst