Войти Создать аккаунт

Алгоритмы и структуры данных · 26 из 30

Быстрая сортировка по Ломуто

Лабораторная «сортировки», вторая часть. После вставок Борис Аркадьевич даёт быструю сортировку — как у Кормена, с разбиением
Ломуто: опорный — последний элемент отрезка, всё, что не больше него, сгоняется влево. Проверять он будет не только результат, но и число обменов: «sorted у вас и так есть. Мне нужен ваш алгоритм, шаг в шаг».

Что сделать

Отсортируйте список на месте быстрой сортировкой с разбиением Ломуто и сосчитайте, сколько было обменов.

Что приходит

  • a — список чисел; его и надо отсортировать, на месте

Что вернуть

Число обменов двух элементов, стоявших на разных местах; сам список после вызова — по возрастанию.

Допишите функцию bystraya в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

Пример

Список [3, 1, 2], опорный — 2. Тройка больше опорного, единица — нет: она меняется местами с тройкой, это первый обмен, — [1, 3, 2]. Опорный встаёт на место тройки — второй обмен, [1, 2, 3]. Слева и справа от опорного по одному элементу, сортировать нечего: ответ 2, а список отсортирован.

Тот же пример кодом
Перед вызовом
a = [3, 1, 2]
Вызов
(bystraya(a), a)
Вернуть
(2, [1, 2, 3])
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.