Нашли ошибку?

Расставить книги на полке

СредняяДописатьГлава 2

#сортировка выбором#массивы#на местеid: ga-shelve-books

Книги на полке нужно расставить по возрастанию номеров, переставляя их прямо на полке — без второй полки (нового списка). Сортировка выбором на месте: на шаге i ищем самую маленькую книгу среди стоящих на местах i…n-1 и меняем её местами с книгой на месте i. Допишите shelve(books): функция сортирует список на месте и возвращает число обменов. Пропуски помечены # TODO.

Пример

books = [42, 19, 3, 7]
shelve(books)   # 3
books           # [3, 7, 19, 42]

Правила

Ограничения

Решение

def shelve(books: list[int]) -> int:
    """Сортирует books на месте выбором и возвращает число обменов."""
    swaps = 0
    for i in range(len(books) - 1):
        smallest = i
        for j in range(i + 1, len(books)):
            # TODO: если books[j] меньше текущего минимума — запомните j
            pass
        if smallest != i:
            # TODO: поменяйте местами книги на местах i и smallest
            swaps += 1
    return swaps

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 shelve_books.py — тесты те же, результат покажет ✓ / ✗ и итог.