Быстрая сортировка в python. Quick sort in Python. Recursive sorting algorithms

Быстрая сортировка в python. Quick sort in Python. Recursive sorting algorithms

egoroff_channel

3 года назад

42,343 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@gitarre_spielen
@gitarre_spielen - 14.08.2023 16:38

скажите, товарищи, а такого рода многократные пробежки не тратят ли больше памяти и времени? я понимаю, это генераторы, однако в каждом следующем генераторе мы проверяем каждый элемент повторно! не эффективнее ли запустить один цикл и в нём проверять величину переменной?
for i in lst:
if i < base:
less.append(i)
elif i > base:
bigger.append(i)
else:
centre.append(i)

или получается одно и то же, ведь мы каждый элемент в худшем случае проверяем дважды?

Ответить
@nicholasspezza9449
@nicholasspezza9449 - 08.08.2023 12:07

Ни про сложность по времени не рассказал, ни по памяти.

Ответить
@codetoday1055
@codetoday1055 - 20.05.2023 16:06

Яке це швидке сортування якщо ви створюєте нові масиви. Тобто відміність швидкого сортуввння від сортування злиттям зникає. (їх відміність в просторовій суладності)

Ответить
@user-bq3uk7ch8m
@user-bq3uk7ch8m - 15.05.2023 11:16

Спасибо, Егор, по моему самое адекватное объяснение. И слушать приятно)).

Ответить
@zhanibeksapakov9084
@zhanibeksapakov9084 - 26.03.2023 07:41

спасибо

Ответить
@rentbest
@rentbest - 12.02.2023 00:51

Спасибо за видео. Я проверил два способа:
1) с использованием метода filter
2) генератор списка через [el for el in arr if el (<, >, ==) pivot]
Вывод: второй метод быстрее, так как не идет вызов функций (а такая операция в питоне происходит не слишком быстро). Возможно, в другом языке ситуация будет иная.

Ответить
@vladislav.ivanov
@vladislav.ivanov - 05.02.2023 09:02

Спасибо, наконец-то разобрался с рекурсией

Ответить
@ymnop9652
@ymnop9652 - 18.01.2023 09:36

Уф, целых три цикла перебора вместо одного, супер эффективно:D

Ответить
@lorddivan713
@lorddivan713 - 11.01.2023 01:25

Спасибо!

Ответить
@VideoGameAddiction
@VideoGameAddiction - 10.01.2023 20:12

Егорка, у тебя с головушкой-то все в порядке, нет? Какая лямбда? Какой фильтр? Мы это не проходили в рамках курса, ты вообще свою филькину грамоту на Степике сам-то видел? Или слепо лепишь совсем не думая, что получится? Позорище, отвратительный курс, автор абсолютно не понимает как построить принцип обучения и вся суть его пребывания на Степике это тешить ЧСВ и впарить какую-то дичь под видом обучения Питону.
Влепил видео дизлайк! Дизлайк теме на Степике!

Ответить
@sergeyl1223
@sergeyl1223 - 22.12.2022 19:05

elem = s[len(s)//2] вот так должно быть. А иначе при выборе элементов > 2 ошибку выбивает

Ответить
@vetenskap1573
@vetenskap1573 - 19.10.2022 16:35

У меня вопрос возник, а почему все эти супер пупер алгоритмы изначально не встроить в языке программирования в качестве встроенных функций ? Почему нужно свои костыли делать ?

Ответить
@user-uy3nd3wb5o
@user-uy3nd3wb5o - 25.09.2022 20:50

Лучшее объяснение что нашел на ютубе. Благодарю

Ответить
@CRESHT
@CRESHT - 16.08.2022 19:42

Объяснение хорошее, но код кошмар для новичков. Какая-то лябда, for - просто ужас. Как научиться сортировке если код не понятен ?

Ответить
@fugas6258
@fugas6258 - 22.07.2022 03:48

ваавав

Ответить
@Nikbleat
@Nikbleat - 06.05.2022 20:49

Такой вопрос, несколько глупый может быть, но для меня пока актуальный. Почему алгоритм является более быстрым, если в обычной сортировке, методом перебора всех элементов и перестановки позиций, так же проверяется каждый элемент, но в этом методе ещё больше действий кроме перебора элементов? И это ещё не говоря о вложенности, которая при огромных массивах вообще может нехило занять память.

Ответить
@braininasquare2199
@braininasquare2199 - 24.04.2022 00:51

Через фильтр большой список становится далеко не быстрым для сортировки

Ответить
@user-tl6lm1kh7w
@user-tl6lm1kh7w - 18.04.2022 22:35

Ты хорош !)

Ответить
@user-sw2uk8xu2i
@user-sw2uk8xu2i - 03.02.2022 21:43

Вы в самом начале ролика сказали что можно брать любой элемент. Это явно ошибка потому что при увеличении размеров списка и например если мы берем первый элемент - скорость вашей работы будет заведомо меньше чем при серединном элементе. Это можно явно заметить при быстрой сортировке с разбиением дейкстры. Если в этом случае вы берете первый элемент - у вас идет сильный упадок скорости. Этот момент нужно подметить и учесть что каждый элемент должен быть - element = array[len(array) // 2] - вот в таком случае на каждой итерации будет решать за nlogn
Учтите это после просмотра!

Ответить
@Strongflight
@Strongflight - 05.01.2022 12:48

Команда на выход приводит к ошибке.
Немного переделал:

Ответить
@WinchesterD
@WinchesterD - 15.12.2021 16:54

Эх, кто бы ещё объяснил, зачем знать алгоритмы сортировки разработчику на Python, если встроенный метод прекрасно справляется с задачей.

Ответить
@edgull_tlt
@edgull_tlt - 17.11.2021 23:41

Спасибо

Ответить
@tumka6988
@tumka6988 - 09.11.2021 17:58

сортировка летит на массиве из равных элементов

Ответить
@user-gb2jd6kb3w
@user-gb2jd6kb3w - 02.11.2021 17:46

Спасибо! Наконец-то понял. Отдельная благодарность за демонстрацию работы с отладчиком.

Ответить
@mystical_stories
@mystical_stories - 26.10.2021 12:19

Большое спасибо за урок! Этот понятнее, чем предыдущий)

Ответить
@vivacuba1990
@vivacuba1990 - 27.01.2021 13:44

ясно и понятно...

Ответить
@evollt
@evollt - 29.12.2020 02:54

красавчик. Объяснил все на понятном языке. Недавно начал читать книгу:"грокаем алгоритмы",вот и не понял алгоритм быстрой сортировки,а ты все прям разжевал как надо. Подписочка оформлена!

Ответить
@dimitrilarios2667
@dimitrilarios2667 - 09.12.2020 11:39

Отличный преподаватель. Алгоритмы - в плейлист.

Ответить
@obe1313
@obe1313 - 09.12.2020 00:08

зачем center, если left всегда меньше elem, а right всегда больше elem?
можно center убрать, и возвращать return qiucksort(left) + [elem] + qiucksort(right)

def qiuck_sort(s):
if len(s) < 2:
return s
else:
elem = s[0]
left = [i for i in s[1:] if i < elem]
right = [i for i in s[1:] if i > elem]
return qiuck_sort(left) + [elem] + qiuck_sort(right)

Ответить
@doloidiktatorov
@doloidiktatorov - 09.12.2020 00:06

Огромное спасибо за алгоритмы.

Ответить
@arxxximed
@arxxximed - 08.12.2020 22:34

А в целом очень хорошо и понятно объясняете

Ответить
@arxxximed
@arxxximed - 08.12.2020 22:34

Вы создаете на каждой итерации рекурсии новые списки- при больших начальных списках память уйдет очень быстро. Изначальный алгоритм быстрой сортировки - эта работа с указателями.

Ответить
@TIMSYSTEM
@TIMSYSTEM - 08.12.2020 18:05

Выглядит как магия!

Ответить
@Al-en6nj
@Al-en6nj - 08.12.2020 17:37

Быстрая сортировка ---> sort(....)

Ответить