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

Поделиться
HTML-код
  • Опубликовано: 4 янв 2025

Комментарии • 85

  • @codaza-channel
    @codaza-channel  3 года назад +7

    Удобная навигация по видео :)
    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 3 года назад +2

      За навигацию отдельный плюс видео

  • @MariMaxVR
    @MariMaxVR 2 года назад +17

    Было бы отлично от вас получить полный курс по C# от новичка до профессионала, будь он хоть платный я бы хотел у вас учиться.

  • @PAPAKOTT
    @PAPAKOTT 3 года назад +8

    Выши ролики , это результат огромного труда. Спасибо за это.
    Очень понятно, доступно и красиво ))).
    Большое спасибо, ещё раз.

    • @codaza-channel
      @codaza-channel  3 года назад +3

      Благодарю за тёплый комментарий 🙂 Читая такие комментарии, понимаешь что нужно создавать ролики дальше.

  • @marksreider7645
    @marksreider7645 3 года назад +6

    Спасибо за хорошую подачу материала!

  • @chinchilla898
    @chinchilla898 3 года назад +3

    Отличный и доступный формат. Ждём новых роликов. Спасибо!

  • @overhealer1
    @overhealer1 2 года назад +6

    Не совсем понятный нейминг в коде, вроде переменная пивот, но в ней хранится самый младший элемент, а сам пивот это array[maxIndex]. А в целом видео супер, спасибо!

  • @Alex_Beck
    @Alex_Beck 2 года назад

    Действительно очень крутая подача!!! Звук, музыка, Анимация. Самое главное очень доходчиво ! Искал сортировку, подписался! Спасибо за видео))) Ждем еще контент! БОЛЬШОЕ спасибо!!!!!!!

  • @GGFXRDR
    @GGFXRDR Год назад

    обьяснил лучше чем другие ютуберы по этой теме, респект

  • @4spor_t
    @4spor_t 6 месяцев назад

    Автор, ты крут! Ждём ещё видео про алгоритмы и структуры данных в С#. Было бы очень круто узнать именно из ваших уст про тонкости данного языка

  • @anonim6364
    @anonim6364 2 года назад

    зачем я это под ночь посмотрел,теперь весь сон буду обдумывать, а так codaza огромное спасибо

  • @МаксимМакаров-л5т
    @МаксимМакаров-л5т 3 года назад +1

    наконец-то попали в мои рекомендации. Спасибо - незаюзанный контент. Спасибо что показываете как код получается на основе черновых набросок а не словно с листка чистовик переписан.

    • @codaza-channel
      @codaza-channel  3 года назад

      Благодарю за комментарий. Надеюсь, информация была полезной 🙂

  • @ym1288
    @ym1288 Год назад

    вернулся через год чтобы пересмотреть и повторить. супер объяснение :)

  • @nikolayvalchanov5686
    @nikolayvalchanov5686 2 года назад +1

    Спасибо за труд. Очень помогаеш!
    Продолжай пожалуйста и не забрасывай!

    • @codaza-channel
      @codaza-channel  2 года назад

      Благодарю! Очень рад, что контент помогает 👍

  • @ЯнаГончарова-ф5с
    @ЯнаГончарова-ф5с 3 года назад +2

    Отличное видео! Ждём новых роликов)

    • @codaza-channel
      @codaza-channel  3 года назад +1

      Спасибо за комментарий. Впереди много интересного 🙂

  • @johndoe4016qweasd
    @johndoe4016qweasd 2 года назад +2

    это просто охренеть насколько крутые видосы (говорю про весь плейлист "Тут станет понятно")! Очень жаль, что забросили по всей видимости(

  • @MrUserNog
    @MrUserNog 3 года назад +1

    О, круто, спасибо! Вы разъяснили именно те моменты которые я не понимал.

  • @Миша-я4ш4о
    @Миша-я4ш4о 25 дней назад

    Понравился разбор сортировки. Посмотрел бы от тебя другие сортировки

  • @antonduschak6641
    @antonduschak6641 2 года назад +1

    Спасибо большое, очень полезное видео. Долго не мог понять

  • @dunnoqwe
    @dunnoqwe Год назад

    Спасибо большое!
    Хотелось бы увидеть видео про другие алгоритмы и структуры данных. Удачи!

  • @Alkain18
    @Alkain18 Год назад

    Шикарное видео! Спасибо!

  • @vladislavdenisenko7587
    @vladislavdenisenko7587 3 года назад +1

    Спасибо большое за видео!

  • @kokon231
    @kokon231 2 года назад +1

    Очень хорошее объяснение. Спасибо!

  • @ym1288
    @ym1288 3 года назад +1

    как же круто объяснил!!!

  • @behemoth1621
    @behemoth1621 9 месяцев назад

    Как и все другие материалы просто шикарны. А есть надежда что будет продолжение канала?

  • @Spa1ke
    @Spa1ke 3 года назад +7

    Нужна сортировка одно-, двух-, трёхмерных массивов, было бы полезно посмотреть такое видео

  • @Дима-г9х6п
    @Дима-г9х6п 3 года назад +2

    Деревья выражений было бы интересно посмотреть.

  • @cryptonewsen1
    @cryptonewsen1 3 года назад +1

    спасибо, очень полезное видео.

    • @codaza-channel
      @codaza-channel  3 года назад

      Благодарю за комментарий. Рад, что информация оказалась полезной 🙂

  • @elmiravzalov5782
    @elmiravzalov5782 2 года назад +2

    Очень хорошо объяснил. Если есть видео про ret и рекурсию, то можно вставить ссылки

  • @vladislavrazgulyaev2967
    @vladislavrazgulyaev2967 3 года назад +3

    привет! расскажи про ENUM....

  • @dad912
    @dad912 Год назад

    очень просто .....спс

  • @АлексейУткин-м4з
    @АлексейУткин-м4з 2 года назад +1

    Упаковка обмена элементами в метод Swap и передача параметров по ссылке, ухудшает производительность быстрой сортировки. Сделал обмен без передачи по ссылке одним блоком кода, сделал серию тестов. Итог передача по ссылке замедляет сортировку на 10 -15%. при сортировке массива на миллион элементов.

  • @VitVit312
    @VitVit312 3 года назад +6

    Я: Не могу понять, когда ютуб уже сообразит и начнёт тебя продвигать
    Ютуб: трясите задом и пускайте цветные сопли !

    • @codaza-channel
      @codaza-channel  3 года назад +3

      Да, ютуб имеет свои представления))
      Спасибо за комментарий, это точно оказывает положительное влияние на продвижение 🙂

  • @PeterCargo
    @PeterCargo Год назад +1

    С 15 минуты по 17 нет звука. А кажется, что там могли быть полезные комментарии по реализации.

  • @Олег-ц2и5п
    @Олег-ц2и5п Год назад

    Я буду прав, если скажу, что на 36 строке (for (int i = minIndex; i < maxIndex; i++)) вместо "

  • @Дмитрийсекрет-н7о
    @Дмитрийсекрет-н7о 3 года назад +3

    А делегаты, события, интерфейсы, IoC и другие страшные вещи разбирать будите?

    • @codaza-channel
      @codaza-channel  3 года назад +4

      Да, думаю, обязательно поговорим об этом на канале 🙂

    • @shurale85
      @shurale85 3 года назад +1

      ну это далеко не страшные вещи)) куда интереснее tpl, valoltile, Expression

  • @Brometey
    @Brometey 2 года назад +1

    Я не совсем понимаю, каким образом мы получаем индекс пивота, есть ли какая-нибудь статья, которую можно прочитать повнимательней ?

    • @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 2 года назад

      По сути мы просто сравниваем все элементы в заданном массиве с последним элементом. И если эти значения меньше или равны последнему элементу, то они перемещаются на позиции перед теми, которые оказались больше последнего элемента. Последний элемент тоже переместится, так как он равен по значению самому себе. Происходит это так: берем элемент, если он меньше или равен последнему, то пивот теперь становится на первую позицию(условно - граница между элементами, которые меньше и больше последнего) Берем второй элемент, например, он оказался больше. Тогда пивот остается на своем месте. И мы уже имеем два отсортированных элемента (второй элемент точно больше первого - мы это проверили). Дальше третий элемент, к примеру, меньше или равен последнему, тогда мы меняем местами второй и третий элемент, потому что второй точно больше третьего(мы это проверяем относительно значения в последнем элементе массива). И таким образом доходим до конца. Последний элемент наконец займет позицию пивота, тк он проходит по условию и равен самому себе.

    • @sergeyz.5845
      @sergeyz.5845 2 года назад

      Здесь одновременно происходит поиск пивота и перемещение элементов

  • @hovikkirishchyan7640
    @hovikkirishchyan7640 Год назад

    @codaza-channel Объясняешь очень хорошо, но есть деталь, в данной реализации быстрой сортировки выбор опорного элемента не происходит случайным образом. Выбор опорного элемента может действительно повлиять на производительность алгоритма быстрой сортировки.
    Выбор неэффективной стратегии опорного элемента может привести к плохой производительности, особенно в случаях, когда массив уже отсортирован или почти отсортирован. Например, если опорный элемент всегда выбирается как первый или последний элемент массива, и массив отсортирован по возрастанию или убыванию, комплексность быстрой сортировки может ухудшиться до O(n^2) вместо среднего случая сложности O(n log n).

  • @caeswr
    @caeswr 3 года назад +1

    супер полезное видео и так мало просмотров

    • @codaza-channel
      @codaza-channel  3 года назад +1

      Благодарю за комментарий и рад, что информация из ролика оказалась полезной 🙂

  • @alexazimov420
    @alexazimov420 2 года назад

    Увеличить скорость можно параллельными процессами.

  • @ВладиславБезуглый-ь2к

    Есть вопрос , зачем результат метода "GetPivotIndex" помещать в переменную соответственно зачем его возвращать.
    У меня эта функция прекрасно работает с значением void без return pivot; и переменной в которую оно возвращаеться .
    Я что-то упускаю или это просто для наглядности ?

    • @Олег-ц2и5п
      @Олег-ц2и5п Год назад

      В методе QuickSort происходит ветвление. дикое ветвление)) и для того, чтобы для каждой веточки была своя переменная pivotIndex, метод GetPivotIndex должен её возвращать. Я так понимаю. Но на дебаге этот вопрос не тестил.

  • @1ncludecpp656
    @1ncludecpp656 2 года назад

    Пива захотелось

  • @syrymjoli
    @syrymjoli 2 года назад

    codazaaaa!)
    почему аза?) вы наверно уже гдето уже отвечали сори лень искать)

    • @codaza-channel
      @codaza-channel  2 года назад

      Это вам Хокку на ночь 😉

  • @СергейПетров-е5ы2п
    @СергейПетров-е5ы2п 6 месяцев назад

    А зачем он нужен, если деградирует по скорости до n^2 в худшем случае, плюс неустойчив, требует доп. памяти как и слиянием, и придуман позже сортировки слиянием...?
    Да, еще требует отдельного алгоритма поиска опорного элемента.

  • @sawa1976
    @sawa1976 Год назад

    Дико извиняюсь за занудство, но разве цикл не лучше сделать до maxIndex -> for (int i = minIndex; i < maxIndex; i++), один цикл и лишнее сравнение можно сэкономить.

  • @Moraru1992
    @Moraru1992 2 года назад

    🤗

  • @dad912
    @dad912 Год назад

    кстати если реф не ставить - метод сорт будет менять свои значения значения переменных а не значения в массиве - так что работать програмка не будет(((

  • @robles2145
    @robles2145 2 года назад

    6:26 важный шаг для понимания алгоритма просто упущен

    • @codaza-channel
      @codaza-channel  2 года назад

      Какой?

    • @stibushix4779
      @stibushix4779 Год назад

      Наверное тот при котором последний элемент массива оказался сразу на своём месте, под индексом 2. Думаю для наглядности "6" надо было поместить в произвольном месте но не на 3 позиции (индекс 2)@@codaza-channel

  • @alexsoft999
    @alexsoft999 2 месяца назад

    знак $ пишется слева цифры

  • @ivanlemming5821
    @ivanlemming5821 2 года назад

    Вы уверены что у вас график логарифма правильно построен?

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Да. Вас что-то смутило?
      Взгляните на эту картинку, возможно в сравнении с другими вариантами картина станет яснее:
      studiousguy.com/wp-content/uploads/2021/06/Complexities-Graph1.png

  • @juliusmalkov9620
    @juliusmalkov9620 2 года назад +1

    ох как ускользнуло - вообще ничего не понял! Что он такой сложный то в понимании!

    • @codaza-channel
      @codaza-channel  2 года назад

      Попробуйте посмотреть альтернативные источники. Например, на Wikipedia дано достаточно подробное описание: en.m.wikipedia.org/wiki/Quicksort

  • @dm1tttry
    @dm1tttry 2 года назад

    Приходиться ставить скорость 1.25, ну очень медленно говоришь

    • @codaza-channel
      @codaza-channel  2 года назад +1

      😥

    • @dm1tttry
      @dm1tttry 2 года назад

      @@codaza-channel Извини если расстроил, по контенту все отлично, ты хорош! Наверно, медленная речь стала заметна после твоих Shortов, где ты за 30 секунд излагаешь быстро какую-то тему :)

  • @bltvg
    @bltvg Год назад

    Я всё надеялся увидеть реализацию без выделения дополнительной O(n) памяти. Но не увидел. В это вся сложность алгоритма.

  • @olegpol1440
    @olegpol1440 2 года назад

    Мало что понятно, просто дублируете код словами не объясняя сути алгоритма

    • @codaza-channel
      @codaza-channel  2 года назад

      Видимо у меня не получилось раскрыть суть алгоритма для вас. Так или иначе, попробуйте посмотреть альтернативные источники. Я могу предложить вам интересную статью, где алгоритм объясняется достаточно подробно: towardsdatascience.com/an-overview-of-quicksort-algorithm-b9144e314a72
      Надеюсь, статья окажется более информативной, чем мой вариант изложения. Не стесняйтесь задавать вопросы 🙂

    • @olegpol1440
      @olegpol1440 2 года назад +1

      @@codaza-channel Спасибо, может вернусь к этому видео позже

  • @Русь-Родина
    @Русь-Родина 2 года назад

    Самый быстрый алгоритм упорядочивания массивов разработан мной, только об этом почему-то помалкивают. Я же никто! )) Это только они, вченные, что-то там самое лучшее разрабатывают, а мы типа неспособны и нам не дано. И да, так называемая сортировка пузырьком является частным случаем моего алгоритма сортировки и задействуется в самом конце, когда пару элементов находящихся рядом надо переставить местами. При этом не нужно перебирать весь отсортированный массив, как может показаться знатокам алгоритма сортировки пузырьком. Невозможное возможно. Хоар курит бамбук со своей быстрой сортировкой. Русские способны создавать лучшее. Лишь бы не мешали им создавать эти типа самые умные это лучшее. Свое ценить надо, а не перед иноземным пресмыкаться. На Масковии не самые умные живут. Доказано практикой жизни.

    • @кирилля-ф9ж
      @кирилля-ф9ж Год назад +1

      а код можно ?

    • @Русь-Родина
      @Русь-Родина Год назад

      @@кирилля-ф9ж Только за деньги! И так всю жизнь за спасибо проработал и живу как бомж. Разрабатывайте сами, если сможете.

    • @MysticalTokarev
      @MysticalTokarev Год назад

      @@Русь-Родина Тогда грош цена твоему алгоритму, бомжара. ^__^ Хоар рулит!

    • @Русь-Родина
      @Русь-Родина Год назад

      @@MysticalTokarev Пусть рулит. Только лучшим он от этого не становится.

    • @ВоваТарковский-я2с
      @ВоваТарковский-я2с 3 месяца назад

      ​​​@@Русь-Родина Если бы ты хотел, чтобы о твоём алгоритме говорили, то ты бы его распространял (сам выше сказал, что "почему-то о нем все помалкивают"), сейчас "только за деньги" звучит как откровенный обман (т.к. доказательств обратному нет).

  • @Русь-Родина
    @Русь-Родина 2 года назад

    Про сортировку таблиц (массивов массивов) ничего не сказано. Эта тема достойна внимания! Не говорите только, что такого алгоритма нет. Хоар в этой сортировке со своей сортировкой точно курит бамбук.))