Алгоритмы и структуры данных · 7 из 17
Пузырёк шарами
Новенькая в диспетчерской такси упорядочивает машины на табло по расстоянию до клиента так, как учили в школе, — пузырьком: идёт по ряду и меняет местами соседей, стоящих не по порядку, и так проход за проходом. Старший диспетчер хочет показать на большом экране, как это выглядит, обмен за обменом, — и почему на сотне машин так никто не делает.
Что сделать
Отсортируйте список пузырьком и верните каждое его состояние: в начале и после каждого обмена соседей.
Что приходит
xs— список чисел; его самого менять нельзя
Что вернуть
Список состояний — копий списка: исходное и после каждого обмена, по порядку.
Допишите функцию puzyrek в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Для [3, 1, 2]: первый проход меняет 3 и 1 — [1, 3, 2], потом 3 и 2 — [1, 2, 3]. Второй проход обменов не делает, и сортировка кончается. Ответ — [[3, 1, 2], [1, 3, 2], [1, 2, 3]].
puzyrek([3, 1, 2])
[[3, 1, 2], [1, 3, 2], [1, 2, 3]]
Пузырёк: проход за проходом идём по соседним парам слева направо и меняем местами пару, где левое строго больше правого. Проход без единого обмена — сортировка закончена. В ответ — исходный список и копия списка после каждого обмена. Равные соседи не меняются. Исходный список xs не меняется: сортируется копия. Пустой список — ответ [[]].
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.