import typing


def selection_sort(numbers: typing.List[int]) -> typing.List[int]:
    """The Selection Sort algorithm.

    Args:
        numbers (typing.List[int]): A list of integers.

    Returns:
        typing.List[int]: A list of integers ordered from smallest value
        to largest value.
    """
    # For every list element:
    for i in range(0, len(numbers), 1):
        # Assume the list element at index i has the smallest value.
        minimum_index = i

        # For every other element in the unsorted list:
        for j in range(i + 1, len(numbers), 1):

            # If the list element at  index j is smaller than what is
            # currently the minimum, then set j as the new minimum.
            if numbers[j] < numbers[minimum_index]:
                minimum_index = j

        # Finally, swap whatever is at index i with the smallest value.
        numbers[i], numbers[minimum_index] = (
            numbers[minimum_index],
            numbers[i],
        )

    return numbers