C# QuickSort Быстрая сортировка

  Рет қаралды 29,260

codaza

codaza

Күн бұрын

В данном ролике мы поговорим об одном из самых популярных алгоритмов сортировки массивов - быстрая сортировка QuickSort (или быстрая сортировка Хоара). Рассмотрим концепцию алгоритма и посмотрим на отличную визуализацию, где всё станет понятно 🙂 В конце ролика мы реализуем алгоритм на языке C# и прочувствуем каждый шаг алгоритма в действии. Будет интересно!
Исходный код проекта на GitHub: github.com/codaza/QuickSort
Коллекция List: • C# List
Telegram канал: t.me/codaza
На кофе ☕️: pay.cloudtips.ru/p/179d0532
Patreon: / codaza
Boosty: boosty.to/codaza
0:00 - Начало
0:41 - Смысл алгоритмов сортировки
1:22 - Виды алгоритмов сортировки
2:59 - Тони Хоар - автор алгоритма QuickSort
3:57 - Разделяй и властвуй
4:49 - Концепция алгоритма QuickSort
6:05 - QuickSort в действии
8:40 - Оценка сложности алгоритма QuickSort
11:01 - Реализуем алгоритм на языке программирования C#
20:27 - Завершение
#quicksort #быстраясортировка #алгоритмысортировки #csharp #сишарп #codaza

Пікірлер: 80
@codaza-channel
@codaza-channel 2 жыл бұрын
Удобная навигация по видео :) 0:00 - Начало 0:41 - Смысл алгоритмов сортировки 1:22 - Виды алгоритмов сортировки 2:59 - Тони Хоар - автор алгоритма QuickSort 3:57 - Разделяй и властвуй 4:49 - Концепция алгоритма QuickSort 6:05 - QuickSort в действии 8:40 - Оценка сложности алгоритма QuickSort 11:01 - Реализуем алгоритм на языке программирования C# 20:27 - Завершение
@Spa1ke
@Spa1ke 2 жыл бұрын
За навигацию отдельный плюс видео
@MariMaxVR
@MariMaxVR Жыл бұрын
Было бы отлично от вас получить полный курс по C# от новичка до профессионала, будь он хоть платный я бы хотел у вас учиться.
@PAPAKOTT
@PAPAKOTT 2 жыл бұрын
Выши ролики , это результат огромного труда. Спасибо за это. Очень понятно, доступно и красиво ))). Большое спасибо, ещё раз.
@codaza-channel
@codaza-channel 2 жыл бұрын
Благодарю за тёплый комментарий 🙂 Читая такие комментарии, понимаешь что нужно создавать ролики дальше.
@behemoth1621
@behemoth1621 2 ай бұрын
Как и все другие материалы просто шикарны. А есть надежда что будет продолжение канала?
@chinchilla898
@chinchilla898 2 жыл бұрын
Отличный и доступный формат. Ждём новых роликов. Спасибо!
@marksreider7645
@marksreider7645 2 жыл бұрын
Спасибо за хорошую подачу материала!
@GGFXRDR
@GGFXRDR 5 ай бұрын
обьяснил лучше чем другие ютуберы по этой теме, респект
@anonim6364
@anonim6364 Жыл бұрын
зачем я это под ночь посмотрел,теперь весь сон буду обдумывать, а так codaza огромное спасибо
@MrUserNog
@MrUserNog 2 жыл бұрын
О, круто, спасибо! Вы разъяснили именно те моменты которые я не понимал.
@Alex_Beck
@Alex_Beck Жыл бұрын
Действительно очень крутая подача!!! Звук, музыка, Анимация. Самое главное очень доходчиво ! Искал сортировку, подписался! Спасибо за видео))) Ждем еще контент! БОЛЬШОЕ спасибо!!!!!!!
@umatov35
@umatov35 Жыл бұрын
Не совсем понятный нейминг в коде, вроде переменная пивот, но в ней хранится самый младший элемент, а сам пивот это array[maxIndex]. А в целом видео супер, спасибо!
@kokon231
@kokon231 2 жыл бұрын
Очень хорошее объяснение. Спасибо!
@ym1288
@ym1288 Жыл бұрын
вернулся через год чтобы пересмотреть и повторить. супер объяснение :)
@nikolayvalchanov5686
@nikolayvalchanov5686 2 жыл бұрын
Спасибо за труд. Очень помогаеш! Продолжай пожалуйста и не забрасывай!
@codaza-channel
@codaza-channel 2 жыл бұрын
Благодарю! Очень рад, что контент помогает 👍
@antonduschak6641
@antonduschak6641 2 жыл бұрын
Спасибо большое, очень полезное видео. Долго не мог понять
@Alkain18
@Alkain18 Жыл бұрын
Шикарное видео! Спасибо!
@vladislavdenisenko7587
@vladislavdenisenko7587 2 жыл бұрын
Спасибо большое за видео!
@ym1288
@ym1288 2 жыл бұрын
как же круто объяснил!!!
@user-jj9rb9nu2h
@user-jj9rb9nu2h 2 жыл бұрын
Отличное видео! Ждём новых роликов)
@codaza-channel
@codaza-channel 2 жыл бұрын
Спасибо за комментарий. Впереди много интересного 🙂
@HDunno
@HDunno Жыл бұрын
Спасибо большое! Хотелось бы увидеть видео про другие алгоритмы и структуры данных. Удачи!
@user-yt5pl9wk3l
@user-yt5pl9wk3l 2 жыл бұрын
наконец-то попали в мои рекомендации. Спасибо - незаюзанный контент. Спасибо что показываете как код получается на основе черновых набросок а не словно с листка чистовик переписан.
@codaza-channel
@codaza-channel 2 жыл бұрын
Благодарю за комментарий. Надеюсь, информация была полезной 🙂
@johndoe4016qweasd
@johndoe4016qweasd 2 жыл бұрын
это просто охренеть насколько крутые видосы (говорю про весь плейлист "Тут станет понятно")! Очень жаль, что забросили по всей видимости(
@tiranbaghdasaryan243
@tiranbaghdasaryan243 2 жыл бұрын
спасибо, очень полезное видео.
@codaza-channel
@codaza-channel 2 жыл бұрын
Благодарю за комментарий. Рад, что информация оказалась полезной 🙂
@Spa1ke
@Spa1ke 2 жыл бұрын
Нужна сортировка одно-, двух-, трёхмерных массивов, было бы полезно посмотреть такое видео
@user-xu8dq5nj3e
@user-xu8dq5nj3e 2 жыл бұрын
Деревья выражений было бы интересно посмотреть.
@VitVit312
@VitVit312 2 жыл бұрын
Я: Не могу понять, когда ютуб уже сообразит и начнёт тебя продвигать Ютуб: трясите задом и пускайте цветные сопли !
@codaza-channel
@codaza-channel 2 жыл бұрын
Да, ютуб имеет свои представления)) Спасибо за комментарий, это точно оказывает положительное влияние на продвижение 🙂
@elmiravzalov5782
@elmiravzalov5782 2 жыл бұрын
Очень хорошо объяснил. Если есть видео про ret и рекурсию, то можно вставить ссылки
@dad912
@dad912 Жыл бұрын
очень просто .....спс
@PeterCargo
@PeterCargo Жыл бұрын
С 15 минуты по 17 нет звука. А кажется, что там могли быть полезные комментарии по реализации.
@vladislavrazgulyaev2967
@vladislavrazgulyaev2967 2 жыл бұрын
привет! расскажи про ENUM....
@user-iv2kz5kh4t
@user-iv2kz5kh4t Жыл бұрын
Я буду прав, если скажу, что на 36 строке (for (int i = minIndex; i < maxIndex; i++)) вместо "
@user-ct4xz5on8h
@user-ct4xz5on8h Жыл бұрын
Упаковка обмена элементами в метод Swap и передача параметров по ссылке, ухудшает производительность быстрой сортировки. Сделал обмен без передачи по ссылке одним блоком кода, сделал серию тестов. Итог передача по ссылке замедляет сортировку на 10 -15%. при сортировке массива на миллион элементов.
@hovikkirishchyan7640
@hovikkirishchyan7640 6 ай бұрын
@codaza-channel Объясняешь очень хорошо, но есть деталь, в данной реализации быстрой сортировки выбор опорного элемента не происходит случайным образом. Выбор опорного элемента может действительно повлиять на производительность алгоритма быстрой сортировки. Выбор неэффективной стратегии опорного элемента может привести к плохой производительности, особенно в случаях, когда массив уже отсортирован или почти отсортирован. Например, если опорный элемент всегда выбирается как первый или последний элемент массива, и массив отсортирован по возрастанию или убыванию, комплексность быстрой сортировки может ухудшиться до O(n^2) вместо среднего случая сложности O(n log n).
@user-yo7mw6oj4p
@user-yo7mw6oj4p 2 жыл бұрын
А делегаты, события, интерфейсы, IoC и другие страшные вещи разбирать будите?
@codaza-channel
@codaza-channel 2 жыл бұрын
Да, думаю, обязательно поговорим об этом на канале 🙂
@shurale85
@shurale85 2 жыл бұрын
ну это далеко не страшные вещи)) куда интереснее tpl, valoltile, Expression
@caeswr
@caeswr 2 жыл бұрын
супер полезное видео и так мало просмотров
@codaza-channel
@codaza-channel 2 жыл бұрын
Благодарю за комментарий и рад, что информация из ролика оказалась полезной 🙂
@user-nw8sn5gf9e
@user-nw8sn5gf9e Жыл бұрын
Есть вопрос , зачем результат метода "GetPivotIndex" помещать в переменную соответственно зачем его возвращать. У меня эта функция прекрасно работает с значением void без return pivot; и переменной в которую оно возвращаеться . Я что-то упускаю или это просто для наглядности ?
@user-iv2kz5kh4t
@user-iv2kz5kh4t Жыл бұрын
В методе QuickSort происходит ветвление. дикое ветвление)) и для того, чтобы для каждой веточки была своя переменная pivotIndex, метод GetPivotIndex должен её возвращать. Я так понимаю. Но на дебаге этот вопрос не тестил.
@Moraru1992
@Moraru1992 2 жыл бұрын
🤗
@codaza-channel
@codaza-channel 2 жыл бұрын
😉
@alexazimov420
@alexazimov420 2 жыл бұрын
Увеличить скорость можно параллельными процессами.
@Brometey
@Brometey 2 жыл бұрын
Я не совсем понимаю, каким образом мы получаем индекс пивота, есть ли какая-нибудь статья, которую можно прочитать повнимательней ?
@codaza-channel
@codaza-channel 2 жыл бұрын
Более основательно Вы можете ознакомиться с алгоритмом быстрой сортировки на wikipedia: en.wikipedia.org/wiki/Quicksort#:~:text=Quicksort%20is%20a%20divide%2Dand,sometimes%20called%20partition%2Dexchange%20sort. Вот тут еще достаточно подробно демонстрируются шаги реализации алгоритма: www.programiz.com/dsa/quick-sort
@sergeyz.5845
@sergeyz.5845 Жыл бұрын
По сути мы просто сравниваем все элементы в заданном массиве с последним элементом. И если эти значения меньше или равны последнему элементу, то они перемещаются на позиции перед теми, которые оказались больше последнего элемента. Последний элемент тоже переместится, так как он равен по значению самому себе. Происходит это так: берем элемент, если он меньше или равен последнему, то пивот теперь становится на первую позицию(условно - граница между элементами, которые меньше и больше последнего) Берем второй элемент, например, он оказался больше. Тогда пивот остается на своем месте. И мы уже имеем два отсортированных элемента (второй элемент точно больше первого - мы это проверили). Дальше третий элемент, к примеру, меньше или равен последнему, тогда мы меняем местами второй и третий элемент, потому что второй точно больше третьего(мы это проверяем относительно значения в последнем элементе массива). И таким образом доходим до конца. Последний элемент наконец займет позицию пивота, тк он проходит по условию и равен самому себе.
@sergeyz.5845
@sergeyz.5845 Жыл бұрын
Здесь одновременно происходит поиск пивота и перемещение элементов
@syrymzholimbetov8860
@syrymzholimbetov8860 Жыл бұрын
codazaaaa!) почему аза?) вы наверно уже гдето уже отвечали сори лень искать)
@codaza-channel
@codaza-channel Жыл бұрын
Это вам Хокку на ночь 😉
@1ncludecpp656
@1ncludecpp656 2 жыл бұрын
Пива захотелось
@codaza-channel
@codaza-channel 2 жыл бұрын
🍺
@sawa1976
@sawa1976 Жыл бұрын
Дико извиняюсь за занудство, но разве цикл не лучше сделать до maxIndex -> for (int i = minIndex; i < maxIndex; i++), один цикл и лишнее сравнение можно сэкономить.
@dad912
@dad912 Жыл бұрын
кстати если реф не ставить - метод сорт будет менять свои значения значения переменных а не значения в массиве - так что работать програмка не будет(((
@robles2145
@robles2145 2 жыл бұрын
6:26 важный шаг для понимания алгоритма просто упущен
@codaza-channel
@codaza-channel 2 жыл бұрын
Какой?
@stibushix4779
@stibushix4779 7 ай бұрын
Наверное тот при котором последний элемент массива оказался сразу на своём месте, под индексом 2. Думаю для наглядности "6" надо было поместить в произвольном месте но не на 3 позиции (индекс 2)@@codaza-channel
@ivanlemming5821
@ivanlemming5821 2 жыл бұрын
Вы уверены что у вас график логарифма правильно построен?
@codaza-channel
@codaza-channel 2 жыл бұрын
Да. Вас что-то смутило? Взгляните на эту картинку, возможно в сравнении с другими вариантами картина станет яснее: studiousguy.com/wp-content/uploads/2021/06/Complexities-Graph1.png
@juliusmalkov9620
@juliusmalkov9620 2 жыл бұрын
ох как ускользнуло - вообще ничего не понял! Что он такой сложный то в понимании!
@codaza-channel
@codaza-channel 2 жыл бұрын
Попробуйте посмотреть альтернативные источники. Например, на Wikipedia дано достаточно подробное описание: en.m.wikipedia.org/wiki/Quicksort
@dm1tttry
@dm1tttry 2 жыл бұрын
Приходиться ставить скорость 1.25, ну очень медленно говоришь
@codaza-channel
@codaza-channel 2 жыл бұрын
😥
@dm1tttry
@dm1tttry 2 жыл бұрын
@@codaza-channel Извини если расстроил, по контенту все отлично, ты хорош! Наверно, медленная речь стала заметна после твоих Shortов, где ты за 30 секунд излагаешь быстро какую-то тему :)
@bltvg
@bltvg Жыл бұрын
Я всё надеялся увидеть реализацию без выделения дополнительной O(n) памяти. Но не увидел. В это вся сложность алгоритма.
@olegpol1440
@olegpol1440 Жыл бұрын
Мало что понятно, просто дублируете код словами не объясняя сути алгоритма
@codaza-channel
@codaza-channel Жыл бұрын
Видимо у меня не получилось раскрыть суть алгоритма для вас. Так или иначе, попробуйте посмотреть альтернативные источники. Я могу предложить вам интересную статью, где алгоритм объясняется достаточно подробно: towardsdatascience.com/an-overview-of-quicksort-algorithm-b9144e314a72 Надеюсь, статья окажется более информативной, чем мой вариант изложения. Не стесняйтесь задавать вопросы 🙂
@olegpol1440
@olegpol1440 Жыл бұрын
@@codaza-channel Спасибо, может вернусь к этому видео позже
@user-oq9xr8dj1b
@user-oq9xr8dj1b Жыл бұрын
Самый быстрый алгоритм упорядочивания массивов разработан мной, только об этом почему-то помалкивают. Я же никто! )) Это только они, вченные, что-то там самое лучшее разрабатывают, а мы типа неспособны и нам не дано. И да, так называемая сортировка пузырьком является частным случаем моего алгоритма сортировки и задействуется в самом конце, когда пару элементов находящихся рядом надо переставить местами. При этом не нужно перебирать весь отсортированный массив, как может показаться знатокам алгоритма сортировки пузырьком. Невозможное возможно. Хоар курит бамбук со своей быстрой сортировкой. Русские способны создавать лучшее. Лишь бы не мешали им создавать эти типа самые умные это лучшее. Свое ценить надо, а не перед иноземным пресмыкаться. На Масковии не самые умные живут. Доказано практикой жизни.
@user-ws7ft5ko6y
@user-ws7ft5ko6y Жыл бұрын
а код можно ?
@user-oq9xr8dj1b
@user-oq9xr8dj1b Жыл бұрын
@@user-ws7ft5ko6y Только за деньги! И так всю жизнь за спасибо проработал и живу как бомж. Разрабатывайте сами, если сможете.
@Vyomantu
@Vyomantu Жыл бұрын
@@user-oq9xr8dj1b Тогда грош цена твоему алгоритму, бомжара. ^__^ Хоар рулит!
@user-oq9xr8dj1b
@user-oq9xr8dj1b Жыл бұрын
@@Vyomantu Пусть рулит. Только лучшим он от этого не становится.
@user-oq9xr8dj1b
@user-oq9xr8dj1b Жыл бұрын
Про сортировку таблиц (массивов массивов) ничего не сказано. Эта тема достойна внимания! Не говорите только, что такого алгоритма нет. Хоар в этой сортировке со своей сортировкой точно курит бамбук.))
They RUINED Everything! 😢
00:31
Carter Sharer
Рет қаралды 25 МЛН
小女孩把路人当成离世的妈妈,太感人了.#short #angel #clown
00:53
Java. Быстрая сортировка. Объяснение на пальцах)
13:20
Sergey Arkhipov Java Tutorials
Рет қаралды 39 М.
C# List
11:35
codaza
Рет қаралды 43 М.
Learn Quick Sort in 13 minutes ⚡
13:49
Bro Code
Рет қаралды 287 М.
C# Strategy Стратегия | Design Patterns
19:06
codaza
Рет қаралды 27 М.
C# Events События
14:36
codaza
Рет қаралды 48 М.
Пишем и подробно разбираем алгоритм Quick Sort на JavaScript | Быстрая сортировка
32:24
Елена Литвинова — Искусство Веб-разработки 🛸
Рет қаралды 9 М.
Bubble Sort C#
1:27:41
CODE BLOG
Рет қаралды 21 М.
They RUINED Everything! 😢
00:31
Carter Sharer
Рет қаралды 25 МЛН