Есть сортировки способные рассчитать предполагаемое место элемента в массиве, хотелось бы услышать о таких сортировка тем более что о них почти нигде нет информации
Лет 20 назад придумал свою быструю сортировку, записал на бумажке, тогда компа у меня не было. Потом он появился, но я про это забыл, несильно давно всё таки решил реализовать алгоритм, получилось. Но скорость поначалу уступала квику, но после оптимизаций удалось сделать более быструю сортировку. Я так же добавил для маленьких частей массива обычный пузырёк, где-то на 7 элементах, и это заметно ускорила сортировку. Преимущество пузырька, что код очень простой, и с маленькими массивами работает весьма быстро.
@@kemencryptocode суть как раз в исходном комментарии. Человек выше пишет, что он без видео на этом канале не понимал алгоритмы и прочее темы которые подымались на этом канале. Это базовые знания, которые проходятся в школе. А алгоритмы вообще не требуют изучения, а требуют понимания, если человек мнит себя хоть каким-то программистом, я думаю он нашел бы уже материал о том какую логику используют сами алгоритмы. А суть моего комментария в том, что не нужно ждать пока тебе принесут на блюдичке разбор базы, иначе потом ты ничего не сможешь делать сам
Спасибо! Смотри уже видео 7-ое без остановок - повторяю каждый новый для себя алгоритм. Мне как новичку в этой деятельности твой канал ОООчень сильно помогает. И несмотря на то, что я не особо увлекался историей программирования, твои видео по истории также очень сильно привлекают.
@@ЦветущаяСакура-ъ7фа чье еще если не мое?) Может день тогда был не из лучших, может башка кипела уже от других вопросов, я уже не помню. Но во второй раз всё зашло спокойно.
Смотря TH-cam и изучая все каналы по теме "Программирования" я нашел тот, который заслуживает внимания для просмотра. Причем информация не простая, но ты делаешь не простые вещи понятными и доступными. Я уже подумал что "Сумасшедшие" и те, которые хотят разобраться в работе того что изобрело человечество вымерли. Как ты говорил: Программирование - это искусство", а для кого программирование это деньги, просто не понимают что они гниют и деградируют в этом мире.
бредятина про деньги, ты сам то будешь за 20к рублей выполнять обязанности сеньера помидора в госконторе? или это другое? да и искусство всегда имеет цену
Либо у человека могут быть совсем другие интересы, а программирочание хороший способ обеспечить себя, свою семью и саму возможность заниматься чем-то другим.
Я ничего из этого не отрицаю, ведь правда, искусство тоже ценится, но если художник работает только из за денег, можно ли его считать ценителями искусства? Не знаю. Скорее это проходные люди которые будут пахать и работать что бы прокормить себя и свою семью...
Лучшее что видела на ютубе!!! По ним можно учиться, повторять, вспоминать. Лучше всего, что показывается не как у большенства на питоне примеры, а на С подобном языке! Ты лучший!!!
Алек, спасибо за видео очень радует твой контент. Я даже и не знал что сортировка Хоара на бумаге так сложна на деле просто пишешь код который уже как вы учёный и даже не задумываешься о том как это работает под капотом и именно за то что ты раздвигаешь для меня и других неким слои абстракций я тебя люблю)
продолжай в том же духе! это только начало разбора темы алгоритмов :) алгоритмов бывает много, разных, для решения разных задач. Из этого можно сделать целый плейлист! Думаю что будет очень интересно. Побольше бы такого качественного контента, визуал видео симпотичный и понятный.
Мне нравятся еще алгоритмы поиска подстроки в строке. С ходу выглядят сложно, но когда разберешься становится понятен принцип. Можно наглядно визуализировать. Стоит сделать на эту тему ролик. Ну и вообще визуальный разбор работы популярных алгоритмов - крутая штука.
в книге Грокаем алгоритмы - Адитья Бхаргава есть приведённые алгоритмы сортировки, и объясняется проще на пальцах. Здесь в видео уж очень всё разжёвывается и очень мудрено рассказывается, я на быстрой сортировке чуть мозг не сломал, хотя это простейщий алгоритм: разделить массив на две части, выбрать опорный элемент,, применить рекурсивно функцию сортировки к двум подмассивам (которые больше и меньше опорного). Всё. стрелочки какие-то... туда идти, сюда не идти... зачем столько сложностей?
Фраза "применить рекурсивно функцию сортировки к двум подмассивам" далеко не для каждого покажется проще чем визуализация стрелочками. Все по разному воспринимают информацию, для вас вот проще видимо текстовое описание
Как раз таки в Грокаем алгоритмы приведена самая простейшая реализация быстрой сортировки, потому что бОльшую часть работы за тебя делает именно пайтон) Попробуй сделать так же например в Си и внезапно возникнут вопросы: "а как получить подмассив? а как их конкатенировать?" И даже если ты найдёшь ответы на них, твоё решение будет суууупермедленным, потому что в каждом рекурсивном вызове ты будешь по нескольку раз маллочить кучу памяти.
Так я книгу тоже читал но после этого видео понял что там приведены только те примеры и выбраны только те опорные точки где левый подмассив будет с числами меньше опорного а правый с числами больше опорного но про то что числа нужно будет менять местами чтобы левый и правый подмассивы были больше и меньше я ничего не слышал и не читал
Спасибо. Я практически педагог информатики и мне нравится Ваш канал, всё очень информативно. Да, со многим знаком, но не менее интересно становится смотреть. Ждём продолжения.
Мне очень нравятся твои видео потому, что видно что они сделаны педантичным человеком: всё так красивенько, практично, понятно визуализировано. Это я заметил только сегодня, после просмотра трёх видео (просто как-то давно мне не рекомендовались). И вот это уже пятое видео подряд, и я заметил как в 22:55 в ячейке количества перестановок отсортированного методом Ломута массива не закрыта скобочка 😅, очень забавно увидеть это после того, что я начал замечать, на сколько мне нравится подача (аудио и видео). Но я в любом случае люблю твои видео, пусть и скобочки нет 👀, они всё равно очень классные
и начинать бы стоило вообще с объяснения что такое О-большое, и как рассчитывается скорость алгоритма. Ну это так, на всякий. Потому что если бы я не знал, то для меня эти формулы в примерах (таблицы сравнения) были бы пустой информацией. А "программистов", которые не отличают линейное время от логарифмического к сожелению много.
В VBA нет сортировки и в свое время пришлось освоить эту технологию. Для меня стало реальным открытием что быстрая сортировка реально быстрая но жрёт стек.
Навеяло... Вспомнил, как в школе в 90-х преподавал информатику. Тогда давали два алгоритма пузырёк и замена. Ещё был метод Шелла. Компьютер был 486, 66 мггц... Массив из 30 000 элементов пузырьком сортировался чуть ли не 30 минут... А методом Шелла за 7 секунд... Я ученикам показывал на этом примере.... Что нужно учится.
В целом видео хорошее, но, довольно, сложно объяснил сортировку Хоара, можно было так: 1. Выбираем случайный элемент, если элемент всего один, то возвращаем его. 2. Выбираем в 2 массива элементы меньше и элементы больше текущего. 3. Рекурсивно вызываем функцию, передавая массивы и переходим в пункт 1.
все-таки в качестве опорного брать не средний элемент, а медиану между первым, средним и последним, это позволит избежать снижения эффективности на краевых случаях.
Сортировка вставками смущает. В видео выглядит, как пузырьком. Я реализовал ее через доп.переменную в которой храню значение текущего элемента (который буду ставить на свое место). Указатель идет по списку и сравнивает текущий элемент с каждым предыдущим элементом. Каждый элемент с которым сравнил в случае, если текущий меньше копирую в соседнюю ячейку справа (смещаю на +1), соответственно в списке становится у одного элемента временно индексы j и j+1. Как только найдется элементь, который больше текущего, ставлю текущий на j+1. В итоге получается не обмен местами у соседних элементов, а именно вставка со смещением всех больших текущего элементов. Промежуточные состояния списка также меняется постоянно: ar = [0, -5, 2, 1] ar = [0, -5, 2, 2] ar = [0, -5, 1, 2] и т.д. На питоне так реализовал: def insertion_sort(array): for i in range(1, len(array)): key = array[i] j = i - 1 while key < array[j] and j >= 0: array[j + 1] = array[j] j -= 1 array[j + 1] = key return array
Сортировка слияниями сделала для меня Хорара неактуальным - всегда логарифм а памяти не жалко Потом я узнал что есть поразрядная взял разряды по 2 в 16 степени - и получил почти линейное время (для дробных можно домножить на на нужную точность чтобы не потерять разряды) Строки вообще всегда за чисто линейное время сотрируются - просто пишется бор (много памяти - пишите сжатый бор, большой алфавит - пишите map в переходах тогда будет логарифм размера алфавита как множетель во времени)
AlexOS, как всегда - лучший, смотрю с 700 подписчиков. Контент только растёт, прекрасное подспорье для начинающего (меня), много полезного кратко и на русском. БОЛЬШОЙ ЛАЙК! (ПС Забыл дописать это к прошлому комменту)
Я то думал, что берем первое значение, и гоним его через весь массив, в попытке найти значение поменьше, попутно запоминая максимально близкое к минимальному значение, их местоположение чтобы больше там не смотреть, и количество дубликатов, создавая новый массив. Но важно помнить, что даже самая простая операция обязательно сожрет такты, поэтому скорость зависит даже от того КАК ИМЕННО вы расположили операторы И ГДЕ.
Конструктивная критика. Визуализация перемещения цифр справа (при сортировке), абсолютно бесполезна без визуализации (подсветки ) частей (строк кода) слева. Вы же не только логику сортировки визуализируете, а еще и алгоритм кода.
помню как раз сам придумал сортировку пузырьком, даже не знал, что такая есть, потом сам же забыл как я это придумал, пришлось гуглить какую нибудь сортировку, в итоге нашел ровно мою идею и сам вспомнил. идея пришла спонтанно и через время ушла. надеюсь я не отупел)
оптимизация классической пузырьковой - хороша. Сортировка вставками - не нужно перелопачивать отсортированую часть массива каждый раз, нужно найти место и туда вставить очередной элемент (переместив элементы на 1 шаг вправо) , как в картах на руках. Потом можно оптимизировать - использовать двоичный поиск. ускорить
Здорово! Как и везде всё начинается с пузырька! :-) \ Давайте начнём писать проект который будет выявлять рекламу и перепрыгивать (отключать) её - это будет супер плагин который будет потом стоять на всех устройствах мира ))) \
Автор постоянно что то упускает, по крайней мере такое впечатление в последних видео, что что-то "само собой разумеещеся" недосказано для новичков (а я уже 20 лет в теме). Алгоритм быстрой сортировки путанно рассказан, имхо конечно, но без перемотки не воспринимается.
13:30 почему указатели остановились на семёрке и тройке? Они же не равноудалены от концов массива. Ведь по твоей логике и коду left++, right-- должны были сравниваться семёрка и четвёрка
Эти алгоритмы красноглазики писали когда 640кБ достаточно было всем. А сейчас можно просто создать новый массив и скопировать в него отсортированные данные за N/2 проходов. А еще лучше сортировать в связных списках или базой SQL.
У меня у одного возник вопрос в сортировке пузырьком? Почему в while != 0, кода правильное условие было б != 1, потому что в цикле for вообще i =1 изначально, следовательно и не будет i=0 - это же получается бесконечный цикл, разве нет?
прогоняем весь массив и находим максимальное число, запускаем цикл от 0 до этого числа. в процессе сверяем счетчик массива со всеми числами, при совпадении перемещаем число в новый массив. т.к. в цикле идет числовая последовательность, то и числа в исходном массиве станут как надо.
@@ДмитрийАлексеев-ш2з в любом случае все значения придется сравнивать с эталоном. в циклах есть функция пропуска значений для ускорения их работы. к слову, массивы на подобии твоих значений легко сортируются через мин/макс, не методом поплавка.
19:49 почему правый указатель не сдвинулся (на подмассиве 9 5 7)? while(arr[right](7) > pivot(5)) right--; в скобках написал значения. 7 > 5, следовательно сработает right-- и right станет указывать на опорный. Потом сработает перестановка и получится 5 9 7. Затем будет сортироваться подмассив 9 7. Они свапнутся, получится 7 9. В итоге подмассива 9 5 7 все равно отсортирован (сортировка работает идеально), но немного не тем путём, как показано в анимации
Отличный материал и визуальная подача. Однако я настоятельно рекомендую расширить диапазон дикторских приёмов. Пауза с приглушением слова/выражения в конце блока - это акцентирование внимания на этом слове/выражении как на ключевом, с последующей "точкой".. и паузой на подумать как именно оно характеризует предшествующий блок информации. У вас слишком часто и совсем не редко этот приём просто неуместен. Из-за этого само повествование рвётся в неожиданных местах, заставляя постоянно фокусировать на конце предложения, где нет ничего, что стоило акцентировать. Сильно мешает восприятию.
В одном моменте перестал понимать быструю сортировку Почему 2 функции называются одинаково? Где мы вызываем каждую из функций? Что такое start и end и откуда они взялись?
Не могу понять, почему сортировка пузырьком имеет сложность O(n^2), если проходов с каждой итерацией становится меньше. Даже в таблице в худшем варианте переборов (n^2)/2
Рекомендую прочитать про сложности алгоритма, это даст больше понимания почему так, но если очень простым языком: при записи сложности умножение, деление, сложение, вычитание не записываются, так как по сути никакого воздействия на общую сложность они не несут (можно провести аналогию с графиками: f(x)=x и f(x)=x/2 это в обоих случаях линейная функция, а значит особого значения не имеет). Значение имеет как раз таки форма функции, а то есть log, sqrt, pow, sin и остальные математические операции изменяющие саму форму функции а не ее смещение на координатной плоскости. P.S Это очень грубо и на пальцах, но это самое доступное объяснение
скорее всего я оч тупой, ноо..... Я кучу раз пересмотрел момент с сортировкой хоара и кое как написал код на плюсах, но для меня этот код это какая-то магия хввхвх
привет. На просторах интернета да и в курсах по программированию чаще всего обучение идет от частного к общему и целостную картину ты обретаешь только к завершению курса, Очень хочется увидеть общую куртину того как стоится программа и работает программирование перед началом обучения, так как в таком подходе ты сразу понимаешь что и для чего изучаются. Может такая тема для видео тебе тоже интересна?
я не понял, а что стоит в питоне за функцией sort(ebuchiy_spisok)? Там же какой-то определённый вид сортировки. И как сортируется текст тоже не понятно.
Всегда красивые проработанные анимации, всё очень гладко рассказывается. Это несомненно хорошо, но в какой-то мере усыпляет внимание зрителя. Иногда корявые объяснения с "ну это, кароч, как его..." в шипящий микрофон лучше откладываются в памяти. А это скорее для эстетического удовольствия тем, кто уже разбирается в вопросе.
Разбери тему статических массивов, которые выделяются на стэке. Сколько не пытался с ними разобраться - ничего не понял. В частности двумерные массивы вообще непонятны. Как мы ходим по строкам, если они друг за другом лежат (самое главное - зачем тогда двумерность). Ну и про то, что условный int arr[7] и int arr[10] - это по факту вообще разные типы данных
Вступай в телеграм-канал: t.me/Alek_OS
Есть сортировки способные рассчитать предполагаемое место элемента в массиве, хотелось бы услышать о таких сортировка тем более что о них почти нигде нет информации
чуть-чуть подушню, но ради улучшения контента в будущем:
13:54 - правильно будет "без их обмена"
я понял только одно чтобы быть хорошим программистом нужно сперва изучить цифровую схемотехнику и архитектуру )))
Все что не пузырек - сложна )
Лет 20 назад придумал свою быструю сортировку, записал на бумажке, тогда компа у меня не было. Потом он появился, но я про это забыл, несильно давно всё таки решил реализовать алгоритм, получилось. Но скорость поначалу уступала квику, но после оптимизаций удалось сделать более быструю сортировку. Я так же добавил для маленьких частей массива обычный пузырёк, где-то на 7 элементах, и это заметно ускорила сортировку. Преимущество пузырька, что код очень простой, и с маленькими массивами работает весьма быстро.
для меня и для еще некоторых одногруппников по программной инженерии твой канал стал спасением. спасибо тебе, Алек
очень жаль, что вы не способны освоить базу самостоятельно. Дальше в программировании вам будет больно
@@eugenefedoryachenko8793 что означает самостоятельно?Читать методичку?
Или же просто глянуть видео по теме, считается несамостоятельным изучением?
@@kemencryptocode суть как раз в исходном комментарии. Человек выше пишет, что он без видео на этом канале не понимал алгоритмы и прочее темы которые подымались на этом канале.
Это базовые знания, которые проходятся в школе. А алгоритмы вообще не требуют изучения, а требуют понимания, если человек мнит себя хоть каким-то программистом, я думаю он нашел бы уже материал о том какую логику используют сами алгоритмы.
А суть моего комментария в том, что не нужно ждать пока тебе принесут на блюдичке разбор базы, иначе потом ты ничего не сможешь делать сам
@@eugenefedoryachenko8793 j8jj
@@eugenefedoryachenko8793 j8jj8i
Спасибо! Смотри уже видео 7-ое без остановок - повторяю каждый новый для себя алгоритм. Мне как новичку в этой деятельности твой канал ОООчень сильно помогает. И несмотря на то, что я не особо увлекался историей программирования, твои видео по истории также очень сильно привлекают.
Где-то на середине объяснения быстрой сортировки всё начало звучать, как потоковый шум😅 Придется в книгу залезть какую-нибудь)
No, try to code it, then it become extremely clear.
@@nullnull557 какой именно плейлист? 17-18 Python, 2018 Python, 2020 C++?
@@nullnull557благодарю
Ты серьезно? А программирование точно твое?
@@ЦветущаяСакура-ъ7фа чье еще если не мое?) Может день тогда был не из лучших, может башка кипела уже от других вопросов, я уже не помню. Но во второй раз всё зашло спокойно.
Я это включаю когда уснуть не могу 😁
не, включай какие-нибудь нуднейшие лекции от душных преподов, таких можешь дальше по поиску искать)
а здесь все очень и очень бодро
Смотря TH-cam и изучая все каналы по теме "Программирования" я нашел тот, который заслуживает внимания для просмотра. Причем информация не простая, но ты делаешь не простые вещи понятными и доступными. Я уже подумал что "Сумасшедшие" и те, которые хотят разобраться в работе того что изобрело человечество вымерли. Как ты говорил: Программирование - это искусство", а для кого программирование это деньги, просто не понимают что они гниют и деградируют в этом мире.
Никто не будет делать «искусство» за просто так. Ни художник, ни скульптор, ни программист
бредятина про деньги, ты сам то будешь за 20к рублей выполнять обязанности сеньера помидора в госконторе? или это другое? да и искусство всегда имеет цену
А разве программист, видящий в программировании искусство, не может хотеть денег?
Либо у человека могут быть совсем другие интересы, а программирочание хороший способ обеспечить себя, свою семью и саму возможность заниматься чем-то другим.
Я ничего из этого не отрицаю, ведь правда, искусство тоже ценится, но если художник работает только из за денег, можно ли его считать ценителями искусства? Не знаю. Скорее это проходные люди которые будут пахать и работать что бы прокормить себя и свою семью...
Лучшее что видела на ютубе!!! По ним можно учиться, повторять, вспоминать. Лучше всего, что показывается не как у большенства на питоне примеры, а на С подобном языке! Ты лучший!!!
Алек, спасибо за видео очень радует твой контент. Я даже и не знал что сортировка Хоара на бумаге так сложна на деле просто пишешь код который уже как вы учёный и даже не задумываешься о том как это работает под капотом и именно за то что ты раздвигаешь для меня и других неким слои абстракций я тебя люблю)
Лучшее объяснение быстрой сортировки, на которое только натыкался
продолжай в том же духе!
это только начало разбора темы алгоритмов :)
алгоритмов бывает много, разных, для решения разных задач. Из этого можно сделать целый плейлист! Думаю что будет очень интересно. Побольше бы такого качественного контента, визуал видео симпотичный и понятный.
Самое легкое объяснение из всех существующих тейков на эту тему что видел. Новичкам будет очень полезно, хорошая работа.
Грокаем алгоритмы - Адитья Бхаргава рекомендую
Вау. Даже добавить нечего. Посмотрев это видео , я поняла, как работают алгоритмы. Из Вас вышел бы хороший преподаватель.
Мне нравятся еще алгоритмы поиска подстроки в строке. С ходу выглядят сложно, но когда разберешься становится понятен принцип. Можно наглядно визуализировать. Стоит сделать на эту тему ролик. Ну и вообще визуальный разбор работы популярных алгоритмов - крутая штука.
"С ходу выглядят сложно" мне кажется поиск подстроки в строке может на псевдокоде написать даже человек, который никогда не прогал :)
в книге Грокаем алгоритмы - Адитья Бхаргава есть приведённые алгоритмы сортировки, и объясняется проще на пальцах. Здесь в видео уж очень всё разжёвывается и очень мудрено рассказывается, я на быстрой сортировке чуть мозг не сломал, хотя это простейщий алгоритм: разделить массив на две части, выбрать опорный элемент,, применить рекурсивно функцию сортировки к двум подмассивам (которые больше и меньше опорного). Всё.
стрелочки какие-то... туда идти, сюда не идти... зачем столько сложностей?
Фраза "применить рекурсивно функцию сортировки к двум подмассивам" далеко не для каждого покажется проще чем визуализация стрелочками. Все по разному воспринимают информацию, для вас вот проще видимо текстовое описание
Как раз таки в Грокаем алгоритмы приведена самая простейшая реализация быстрой сортировки, потому что бОльшую часть работы за тебя делает именно пайтон)
Попробуй сделать так же например в Си и внезапно возникнут вопросы: "а как получить подмассив? а как их конкатенировать?"
И даже если ты найдёшь ответы на них, твоё решение будет суууупермедленным, потому что в каждом рекурсивном вызове ты будешь по нескольку раз маллочить кучу памяти.
Так я книгу тоже читал но после этого видео понял что там приведены только те примеры и выбраны только те опорные точки где левый подмассив будет с числами меньше опорного а правый с числами больше опорного но про то что числа нужно будет менять местами чтобы левый и правый подмассивы были больше и меньше я ничего не слышал и не читал
Спасибо. Я практически педагог информатики и мне нравится Ваш канал, всё очень информативно. Да, со многим знаком, но не менее интересно становится смотреть. Ждём продолжения.
Большое спасибо! Это лучшее объяснение сортировок, что я нашел! И лайк за подсказку про сортировку хоара+выбором, меньше итераций в 3 раза)
Мне очень нравятся твои видео потому, что видно что они сделаны педантичным человеком: всё так красивенько, практично, понятно визуализировано. Это я заметил только сегодня, после просмотра трёх видео (просто как-то давно мне не рекомендовались). И вот это уже пятое видео подряд, и я заметил как в 22:55 в ячейке количества перестановок отсортированного методом Ломута массива не закрыта скобочка 😅, очень забавно увидеть это после того, что я начал замечать, на сколько мне нравится подача (аудио и видео).
Но я в любом случае люблю твои видео, пусть и скобочки нет 👀, они всё равно очень классные
Нужна часть 2. В которой доказывается что cортировать быстрее NlogN невозможно. И часть 3 где расказывается про сортировку Radix :)
и начинать бы стоило вообще с объяснения что такое О-большое, и как рассчитывается скорость алгоритма. Ну это так, на всякий. Потому что если бы я не знал, то для меня эти формулы в примерах (таблицы сравнения) были бы пустой информацией. А "программистов", которые не отличают линейное время от логарифмического к сожелению много.
Невозможно только для сортировок сравнения. Сортировки подсчётом, например, могут работать быстрее
@@AlexandrSakuraпро O(N)-нотацию у него отдельное видео есть
Самое сложное объяснение быстрой сортировки, что я видел, но вначале все отлично)
Замечательное видео, на паре ничего не понятно, но тут объяснили очень доходчиво сам формат видимо кайфовый, лайк и подписка однозначно👍
Контент топ, спасибо тебе за то, что делаешь!
Какой же кайф смотреть такие ролики
топ! пересматриваю по несколько раз. и советую этот канал друзьям!
Спасибо большое за видео. Все красиво, понятно и доступно.
Лучший канал по теории ИТ
Очень круто чувак ! Я до сортировок вообще еще не дошел, но с удовольствием смотрю!
В VBA нет сортировки и в свое время пришлось освоить эту технологию. Для меня стало реальным открытием что быстрая сортировка реально быстрая но жрёт стек.
В VBA для сортировки можно использовать класс ArrayList с методами Sort и Reverse.
Лучший канал! Спасибо!
Крайне полезный контент, с удовольствием смотрю каждое видео!
мне нравится сортировка Шелла(улучшенный вариант пузырьком) - проста в реализации и алгоритмическая сложность как у быстрой
Два видоса за месяц каеф, балуешь перед НГ
Офигеть, просто вау!
Спасибо за ролик!
Спасибо за очень хорошую визуализацию сложных тем. Это большой вклад в развитие многих и просвещение IT.
Эх, где же ты был когда я готовился сдавать комиссию по ОАиП?)))
Видос топ, автор красава.
Круто, давай еще, вперед вперед😅
Навеяло... Вспомнил, как в школе в 90-х преподавал информатику. Тогда давали два алгоритма пузырёк и замена. Ещё был метод Шелла.
Компьютер был 486, 66 мггц...
Массив из 30 000 элементов пузырьком сортировался чуть ли не 30 минут... А методом Шелла за 7 секунд... Я ученикам показывал на этом примере.... Что нужно учится.
Столько этих видео про сортировки. А в работе всё равно в первую очередь думаешь, как их избежать, либо максимально уменьшить число "n")
Как всегда интересно, спасибо за разбор:3
Так круто быструю сортировку никто не показывал
В целом видео хорошее, но, довольно, сложно объяснил сортировку Хоара, можно было так:
1. Выбираем случайный элемент, если элемент всего один, то возвращаем его.
2. Выбираем в 2 массива элементы меньше и элементы больше текущего.
3. Рекурсивно вызываем функцию, передавая массивы и переходим в пункт 1.
А лучше бы вообще код дал и не стал бы ничего виузализировать. Десять минут бы вам сократил)))
@@8-----3 хорошая шутка, но я имел ввиду, что так лучше понять)
все-таки в качестве опорного брать не средний элемент, а медиану между первым, средним и последним, это позволит избежать снижения эффективности на краевых случаях.
Сортировка вставками смущает. В видео выглядит, как пузырьком. Я реализовал ее через доп.переменную в которой храню значение текущего элемента (который буду ставить на свое место). Указатель идет по списку и сравнивает текущий элемент с каждым предыдущим элементом. Каждый элемент с которым сравнил в случае, если текущий меньше копирую в соседнюю ячейку справа (смещаю на +1), соответственно в списке становится у одного элемента временно индексы j и j+1. Как только найдется элементь, который больше текущего, ставлю текущий на j+1. В итоге получается не обмен местами у соседних элементов, а именно вставка со смещением всех больших текущего элементов.
Промежуточные состояния списка также меняется постоянно:
ar = [0, -5, 2, 1]
ar = [0, -5, 2, 2]
ar = [0, -5, 1, 2] и т.д.
На питоне так реализовал:
def insertion_sort(array):
for i in range(1, len(array)):
key = array[i]
j = i - 1
while key < array[j] and j >= 0:
array[j + 1] = array[j]
j -= 1
array[j + 1] = key
return array
Спасибо за видео! Всегда жду
Спасибо за видео! Очень хорошая подача материала!
Сортировка слияниями сделала для меня Хорара неактуальным - всегда логарифм а памяти не жалко Потом я узнал что есть поразрядная взял разряды по 2 в 16 степени - и получил почти линейное время (для дробных можно домножить на на нужную точность чтобы не потерять разряды) Строки вообще всегда за чисто линейное время сотрируются - просто пишется бор (много памяти - пишите сжатый бор, большой алфавит - пишите map в переходах тогда будет логарифм размера алфавита как множетель во времени)
AlexOS, как всегда - лучший, смотрю с 700 подписчиков. Контент только растёт, прекрасное подспорье для начинающего (меня), много полезного кратко и на русском. БОЛЬШОЙ ЛАЙК! (ПС Забыл дописать это к прошлому комменту)
Спасибо огромное за видео, все понятно и интересно, прошу по больше таких видео
Большое спасибо за твои ролики. Очень классно.
Хорошая визуализация. И достаточно нужная тема.
Я то думал, что берем первое значение, и гоним его через весь массив, в попытке найти значение поменьше, попутно запоминая максимально близкое к минимальному значение, их местоположение чтобы больше там не смотреть, и количество дубликатов, создавая новый массив.
Но важно помнить, что даже самая простая операция обязательно сожрет такты, поэтому скорость зависит даже от того КАК ИМЕННО вы расположили операторы И ГДЕ.
Конструктивная критика.
Визуализация перемещения цифр справа (при сортировке), абсолютно бесполезна без визуализации (подсветки ) частей (строк кода) слева. Вы же не только логику сортировки визуализируете, а еще и алгоритм кода.
помню как раз сам придумал сортировку пузырьком, даже не знал, что такая есть, потом сам же забыл как я это придумал, пришлось гуглить какую нибудь сортировку, в итоге нашел ровно мою идею и сам вспомнил.
идея пришла спонтанно и через время ушла. надеюсь я не отупел)
Спасибо, лучший!❤
Большое спасибо, было интересно с точки зрения инженерий)
оптимизация классической пузырьковой - хороша. Сортировка вставками - не нужно перелопачивать отсортированую часть массива каждый раз, нужно найти место и туда вставить очередной элемент (переместив элементы на 1 шаг вправо) , как в картах на руках. Потом можно оптимизировать - использовать двоичный поиск. ускорить
1:44 это называется «сортировки сравнением». Есть же способы сортировать элементы не сравнивая их явно
Здорово! Как и везде всё начинается с пузырька! :-) \ Давайте начнём писать проект который будет выявлять рекламу и перепрыгивать (отключать) её - это будет супер плагин который будет потом стоять на всех устройствах мира ))) \
Такой уже есть)
Автор постоянно что то упускает, по крайней мере такое впечатление в последних видео, что что-то "само собой разумеещеся" недосказано для новичков (а я уже 20 лет в теме). Алгоритм быстрой сортировки путанно рассказан, имхо конечно, но без перемотки не воспринимается.
Так и должно происходить, когда надо подумать. С книгами совершенно то же самое.
Довольно доступные объяснения, интересно слушать.
Красавчик👍 очень всё понятно
Крутой видосик, даже под бухлишком номана зашел
Смотря первые три сортировки:
- Что я тут делаю? Я что тупой?
Смотря последние две сортировки:
- Что я тут делаю? Я что умный?
13:30 почему указатели остановились на семёрке и тройке? Они же не равноудалены от концов массива. Ведь по твоей логике и коду left++, right-- должны были сравниваться семёрка и четвёрка
Спасибо за видео!
Можешь показать как выглядит цикл или условный оператор на ассемблере?
Круто! Аж олдскулы свело)
Ещё раз пересмотрел. стало ещё интереснее и понятнее
Эти алгоритмы красноглазики писали когда 640кБ достаточно было всем. А сейчас можно просто создать новый массив и скопировать в него отсортированные данные за N/2 проходов. А еще лучше сортировать в связных списках или базой SQL.
У меня у одного возник вопрос в сортировке пузырьком? Почему в while != 0, кода правильное условие было б != 1, потому что в цикле for вообще i =1 изначально, следовательно и не будет i=0 - это же получается бесконечный цикл, разве нет?
Согласен, тоже обратил внимание
Наглядно, понятно. Спасибо 👍
13:52 ... сдвинуть указатели без ИХНЕГО обмена🤪
и? человеческий фактор, лол
@Pavel Zubkov да, тут совершенно бесплатная информация, сделаная человеком, который вполне может ошибится.
Ладно подпишусь. Весьма интересный канал
Очень интересное и познавательное видео!!!
прогоняем весь массив и находим максимальное число, запускаем цикл от 0 до этого числа. в процессе сверяем счетчик массива со всеми числами, при совпадении перемещаем число в новый массив. т.к. в цикле идет числовая последовательность, то и числа в исходном массиве станут как надо.
А теперь представь, что тебе надо отсортировать такой массив из 4-х элементов: {0, 1, 1е100, 1е101}
@@ДмитрийАлексеев-ш2з в любом случае все значения придется сравнивать с эталоном. в циклах есть функция пропуска значений для ускорения их работы. к слову, массивы на подобии твоих значений легко сортируются через мин/макс, не методом поплавка.
19:49 почему правый указатель не сдвинулся (на подмассиве 9 5 7)? while(arr[right](7) > pivot(5)) right--; в скобках написал значения. 7 > 5, следовательно сработает right-- и right станет указывать на опорный. Потом сработает перестановка и получится 5 9 7. Затем будет сортироваться подмассив 9 7. Они свапнутся, получится 7 9. В итоге подмассива 9 5 7 все равно отсортирован (сортировка работает идеально), но немного не тем путём, как показано в анимации
Я восемь раз пересмотрел отрывок быстрой сортировки, чтобы понять, как оно работает и как это написать. Я тупой!?
Спасибо ..за Ваш контент .!!))
Большое спасибо за разбор
Нет Merge Sort, но зато есть вариации quick sort это как? Где сортировка кучей? Это классика это знать надо!
4-5 строчка кода вызывает вопросы ,если pivot окажется максимальным или минимальным значением программа сломается
Отличный материал и визуальная подача.
Однако я настоятельно рекомендую расширить диапазон дикторских приёмов. Пауза с приглушением слова/выражения в конце блока - это акцентирование внимания на этом слове/выражении как на ключевом, с последующей "точкой".. и паузой на подумать как именно оно характеризует предшествующий блок информации. У вас слишком часто и совсем не редко этот приём просто неуместен. Из-за этого само повествование рвётся в неожиданных местах, заставляя постоянно фокусировать на конце предложения, где нет ничего, что стоило акцентировать. Сильно мешает восприятию.
Здравствуйте! Покажите пожалуйста полностью код "пузырьковой" сортировки.
делай больше контента у тебя получается отлично!!
Спасибо за твои видео, но мозг кипит уже на середине
Спасибо большое, из видео я понял, что алгоритмы не мое 😅
В одном моменте перестал понимать быструю сортировку
Почему 2 функции называются одинаково?
Где мы вызываем каждую из функций?
Что такое start и end и откуда они взялись?
Красота!
Новый вид подачи рекламы - самое интересное до её
конечно же лайк)
Не могу понять, почему сортировка пузырьком имеет сложность O(n^2), если проходов с каждой итерацией становится меньше. Даже в таблице в худшем варианте переборов (n^2)/2
Рекомендую прочитать про сложности алгоритма, это даст больше понимания почему так, но если очень простым языком: при записи сложности умножение, деление, сложение, вычитание не записываются, так как по сути никакого воздействия на общую сложность они не несут (можно провести аналогию с графиками: f(x)=x и f(x)=x/2 это в обоих случаях линейная функция, а значит особого значения не имеет). Значение имеет как раз таки форма функции, а то есть log, sqrt, pow, sin и остальные математические операции изменяющие саму форму функции а не ее смещение на координатной плоскости.
P.S Это очень грубо и на пальцах, но это самое доступное объяснение
@@wrouk6557 спасибо, разобрался. Забыл, что эти операции не учитываются
это потому-что возрастание при n одинакова
Канал действительно мирового уровня и тот случай когда можно пожалеть британцам что не владеют русским языком☝🏻
скорее всего я оч тупой, ноо..... Я кучу раз пересмотрел момент с сортировкой хоара и кое как написал код на плюсах, но для меня этот код это какая-то магия хввхвх
привет. На просторах интернета да и в курсах по программированию чаще всего обучение идет от частного к общему и целостную картину ты обретаешь только к завершению курса, Очень хочется увидеть общую куртину того как стоится программа и работает программирование перед началом обучения, так как в таком подходе ты сразу понимаешь что и для чего изучаются. Может такая тема для видео тебе тоже интересна?
Вставки у нас еще назывался пузырьковый метод
я не понял, а что стоит в питоне за функцией sort(ebuchiy_spisok)?
Там же какой-то определённый вид сортировки.
И как сортируется текст тоже не понятно.
Лучший. спасибо за видос! только с названиями сортировок что то не то... да, совсем не то...
Всегда красивые проработанные анимации, всё очень гладко рассказывается. Это несомненно хорошо, но в какой-то мере усыпляет внимание зрителя. Иногда корявые объяснения с "ну это, кароч, как его..." в шипящий микрофон лучше откладываются в памяти. А это скорее для эстетического удовольствия тем, кто уже разбирается в вопросе.
Однозначно
Это Ваши привычки.
У меня засор в туалете, я пытаюсь найти как работает сортир. TH-cam выдаёт мне это. Спасибо, TH-cam
Как же задолбали эти алгоритмы сортировки в перерывах рекламы.
п.с. Вы реально уже охренели пихать столько рекламы!
Разбери тему статических массивов, которые выделяются на стэке. Сколько не пытался с ними разобраться - ничего не понял. В частности двумерные массивы вообще непонятны. Как мы ходим по строкам, если они друг за другом лежат (самое главное - зачем тогда двумерность). Ну и про то, что условный int arr[7] и int arr[10] - это по факту вообще разные типы данных