"""
Bucketsort implementation using linked lists

Copyright 2026, University of Freiburg.

Philipp Schneider <philipp.schneider@cs.uni-freiburg.de>
"""

from Queue import Queue  # noqa
from ListElement import ListElement  # noqa


def bucket_sort(array, k, key=lambda x: x):
    '''
    Implements the bucket sort algorithm to sort
        data elements using a key function to
        assign sorting keys to data elements

    Args:
        array: array of data elements
        k: largest key
        key: a function mapping data elements to values
        in range(k+1) (identity function as default)

    >>> array = [10-i for i in range(10)]
    >>> bucket_sort(array, 10)
    >>> str(array)
    '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]'
    '''
    pass
