В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
kiradimitrova
kiradimitrova
07.01.2021 05:39 •  Информатика

решить задачу на Питоне Быстрая сортировка


решить задачу на Питоне Быстрая сортировка
решить задачу на Питоне Быстрая сортировка

Ответ:
Pandi2
Pandi2
26.12.2020 14:57

Алгоритм быстрой сортировки подразумевает следующее.

В качестве опорного элемента выбирается какой-то из элементов отрезка массива (я в коде буду брать самый левый). Затем все элементы массива делятся на две части: все, кто меньше опорного элемента, должны стоять левее его, все, кто больше, правее. Затем всё продолжается для двух подмассивов из чисел, больших опорного элемента, и чисел, меньших опорного элемента. Процесс останавливается, если в том отрезке массива, который требуется отсортировать, один или ноль элементов.

Можно предложить такую реализацию:

def QS(A, st, end):

   if end <= st:

       return

   base = A[st]

   less = [elem for elem in A[st:end + 1] if elem < base]

   equal = sum(elem == base for elem in A[st:end + 1])

   greater = [elem for elem in A[st:end + 1] if elem > base]

   A[st:st + len(less)] = less

   A[st + len(less):st + len(less) + equal] = [base] * equal

   A[st + len(less) + equal:end + 1] = greater

   QS(A, st, st + len(less) - 1)

   QS(A, st + len(less) + equal, end)

Но это всё выглядит не очень в стиле Питона - скорее всего, авторы курса просто бездумно скопировали задание с других языков программирования.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?