Тёмный

#13. Быстрая сортировка Хоара | Алгоритмы на Python 

selfedu
Подписаться 152 тыс.
Просмотров 22 тыс.
50% 1

Рассказывается об одном из самых популярных алгоритмов быстрой сортировки массивов по Хоару. Приводятся особенности его работы и возможность сортировать непосредственно в исходном массиве. Представлена программа на языке Python.
algorithm-quick-sort.py: github.com/selfedu-rus/python...

Опубликовано:

 

4 мар 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 33   
@dimakovalenkov7835
@dimakovalenkov7835 3 года назад
1. рассказать про преимущества сортировки без создания дополнительных списков 2. создать по 3 списка на каждую итерацию(тремя циклами)
@user-oj9pb3bv5w
@user-oj9pb3bv5w 9 месяцев назад
вот пример с сортировкой на месте from random import randint def partition(array: list, left: int, right: int) -> int: rand = randint(left, right) array[rand], array[left] = array[left], array[rand] x = array[left] j = left for i in range(left + 1, right + 1): if array[i] None: if left < right: m = partition(array, left, right) quick_sort(array, left, m - 1) quick_sort(array, m + 1, right)
@user-hr1pd3ev8b
@user-hr1pd3ev8b 6 месяцев назад
@@user-oj9pb3bv5w Спасибо
@user-ym3yt1uq7s
@user-ym3yt1uq7s Год назад
Очень доходчиво и интересно спасибо Вам за труды
@deniskrepak
@deniskrepak 3 года назад
Очень понятно объясняете, спасибо Вам!
@friend1cat
@friend1cat 3 года назад
Спасибо, Сергей.
@rostislavmalyshev1775
@rostislavmalyshev1775 3 года назад
Спасибо. Как всегда The Best!
@user-ji5wf5ke4b
@user-ji5wf5ke4b 3 года назад
Благодарю за материал!
@mustafinabulhairc-0kn286
@mustafinabulhairc-0kn286 Год назад
спасибо, большое
@user-yp6yv2ub2u
@user-yp6yv2ub2u Год назад
Спасибо!!!
@kat_katchinskiy
@kat_katchinskiy 5 месяцев назад
на 9:53 не понял почему в конце двойка если массив отсортирован -_-
@YbisZX
@YbisZX 2 месяца назад
Это на первой итерации. Нужно столько таких проходов пока не будет ни одной перестановки.
@trampika2013
@trampika2013 Год назад
thanks
@user-ee1lx1pe7n
@user-ee1lx1pe7n 2 года назад
Спасибо огромное! А разве Python реализован не на C? Если мы говорим о реализации CPython. Почему вы говорите о C++? Расскажите, пожалуйста, это интересно.
@selfedu_rus
@selfedu_rus 2 года назад
Я, конечно, сам язык не разрабатывал )) но думаю, что его все-таки на С++ делали, т.к. сделать такую вещь без ООП - это подвиг )
@sevakvart1111
@sevakvart1111 3 года назад
Хороший урок
@user-qh5fr3yo1w
@user-qh5fr3yo1w Год назад
Не очень понял но интересно.
@zwerg6406
@zwerg6406 2 года назад
А почему при сортировке на месте остались 2 последних элемента неотсортированы? [...10, 2]
@selfedu_rus
@selfedu_rus 2 года назад
поторопился с перемещением указателя
@dvkonstantinov
@dvkonstantinov 2 года назад
@@selfedu_rus Нет, дело тут не в указателе. Нужно рекурсию вызывать
@sergeyv1534
@sergeyv1534 3 года назад
В качестве идеи - дополнить цикл лекций разбором применения метода list.sort() и функции sorted(list) с ключами.
@selfedu_rus
@selfedu_rus 3 года назад
Это уже есть: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-uvlKcOS4OQw.html
@sergeyv1534
@sergeyv1534 3 года назад
@@selfedu_rus Упс, проглядел.
@user-ry2su4jo2l
@user-ry2su4jo2l Год назад
без рекурсии тоже работает def f_sort(l): if len(l) l[0]] return left + center + right
@medencev
@medencev Год назад
Однократное деление массива на три группы само по себе не отсортирует его (за исключением нескольких частных случаев). Рекурсия является залогом того, что массив поделится на группы равных элементов, которые в дальнейшем будут сгруппированы
@ymnop9652
@ymnop9652 Год назад
Как и сказали выше, рекурсия сортирует левый и правый массивы, без неё мы можем соединить левый неотсортированный, средний, и правый неотсортированный. пример: [3,2,5,8,7,1] где значение с которым сравниваем - 5 получим L = [3, 2, 1] M = [5] R = [8, 7], L + M + R = [3, 2, 1, 5, 8, 7]
@dmitrypenzar5229
@dmitrypenzar5229 2 года назад
быстрой сортировкой это не является (код, что написан). Это штука по логике будет медленнее по-человечески написанной MergeSort
@selfedu_rus
@selfedu_rus 2 года назад
Реализация на Python, конечно, медленнее, чем на С++. Здесь объясняется лишь алгоритм сортировки, не более того.
@dmitrypenzar5229
@dmitrypenzar5229 2 года назад
@@selfedu_rus проблема не в Python, а в том, как вы на нем написали. У Qsort вся идея в том, что вам НЕ нужно заводить дополнительную память
@selfedu_rus
@selfedu_rus 2 года назад
@@dmitrypenzar5229 Это да, я согласен! Ну, идея изложена, реализовать - дело техники )
@ymnop9652
@ymnop9652 Год назад
@@dmitrypenzar5229Но ведь на Left, MIddle, Rigth память в любом случае уйдёт?
@AnatoliyDekorstyle
@AnatoliyDekorstyle 7 месяцев назад
Вообще конечно реализация "Быстрых сортировок" массива через рекрсию - звучит даже смешно)) максимальная глубина рекурсии (по дефолту ~1000) не позволит сортировать массив с N выше 1000. То есть какие сотни тысяч или милионы)) Скорее упрощенная визуализация алгоритма...
@ekzzy9054
@ekzzy9054 5 месяцев назад
Разве? Глубина рекурсии в быстрой сортировке будет немного больше чем log2(N), что позволяет сортировать массивы под 2^1000, если брать 1000 за глубину рекурсии. Если я ошибаюсь, то поясните, пожалуйста.
Далее
ГЕНИИ МАРКЕТИНГА 😂
00:35
Просмотров 3,2 млн
ОВР Шоу: Русская баня @TNT_television
12:06
AMAZING COTTON CANDY HACK!🤑 #shorts
00:37
Просмотров 3,6 млн
UZmir & Mira - Qani qani (Snippet)
00:26
Просмотров 919 тыс.
ГЕНИИ МАРКЕТИНГА 😂
00:35
Просмотров 3,2 млн