Сортировка кучей (пирамидальная сортировка) :: Heap sort

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

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

  • @МарсельХафизов-в3л
    @МарсельХафизов-в3л 2 месяца назад +2

    Очень хорошая визуализация и понятное объяснение. Визуализация прям помогла понять, как этот алгоритм работает.

  • @alexalexander3252
    @alexalexander3252 3 года назад +13

    Фраза "спускаемся на уровень выше" на 6:14 взорвала мой мозг.

  • @LYT101
    @LYT101 Год назад +4

    Благодарю, это самое понятное визуальное представление алгоритма пирамидальной сортировки.

  • @maksim2530
    @maksim2530 Год назад +4

    Дай Бог тебе здоровья, чётко объяснил и разложил суть сортировки

  • @alexanderstashchuk8330
    @alexanderstashchuk8330 Год назад +5

    Спасибо! Лучшее наглядное объяснение.

  • @kalts_daniil
    @kalts_daniil 11 месяцев назад +1

    Прекрасное объяснение! Спасибо огромное за урок!!!

  • @megadeth205
    @megadeth205 3 месяца назад +1

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

  • @mitruslatovous6
    @mitruslatovous6 3 месяца назад +3

    1:30 Формулы: для i элемента его левый потомок вычисляется как i*2+1, а его правый потомок вычисляется как i*2+2 (при условии, что индексирование начинается с 0)

  • @АлёнаСоболева-э4д
    @АлёнаСоболева-э4д 4 года назад +2

    Большое спасибо, всё очень понятно объяснено!

  • @solidesuu
    @solidesuu 3 года назад +9

    Далеко не лучшее объяснение, но отличная визуализация сильно выручает

  • @kagatooo
    @kagatooo 3 года назад +2

    Качество видео просто шик. Я и сам занимаюсь гайдами, но от вашего прикурил!

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

    Отлично подготовленная презентация! Спасибо!

  • @СергейХромин-у4м
    @СергейХромин-у4м 4 года назад +2

    Обалденно, спасибо огромное, продолжай выпускать свои ролики, пожалуйста!

  • @ЯнЯнковский-э3м
    @ЯнЯнковский-э3м 3 года назад

    Спасибо огромное! Очень хорошо и наглядно объясняете

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

    крутое наглядное объяснение!спасибо за видео!

  • @НикитаБабкин-я3р
    @НикитаБабкин-я3р 7 месяцев назад

    Мужик, ты реально хорош, спасибо тебе!

  • @maxpo801
    @maxpo801 3 года назад +13

    Вы детально рассказываете реализацию идеи, но саму идею ПРОСТЫМИ СЛОВАМИ не рассказали. А по сути, мы хотим, получить как-то бинарное дерево, отсортированное по величине значений элементов. Проще начать сортировку с нижних троек, постепенно сортируя дерево вверх. Почему иногда происходит спуск вниз, если мы изначально поднимаемся от ветвей к корню? Потому что у нас цель получить отсортированное по убыванию значений дерево, а при перестановке значений у любого узла, одна из его ветвей может оказаться неотсортированной, что противоречит главной задаче - сортировке, и если не сделать спуск сразу, то алгоритм сортировки будет намного сложнее.
    Детали - это хорошо, но большинство академических преподавателей страдает невозможностью простыми словами изложить простую идею, которая изначально и приходит создателям в голову, когда они лежат в постели, сидят на унитазе, или едят. А так нам приходится пробираться из дебрей реализации к простой изначальной идее.
    А так, лайк за видео!

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

      Золотые слова. Уже статьи 4 прочел, не разобрался. Решил видеоролики посмотреть.

  • @frysisrawhide8923
    @frysisrawhide8923 11 месяцев назад +1

    Лучше и наглядное объяснение. Уже день пытаюсь вдуплить, почему да как.

  • @ВладимирП-р4в
    @ВладимирП-р4в 4 года назад +2

    Спасибо! Разъяснено понятно!

  • @СергейГригоренко-е8ь

    Отличное объяснение, спасибо!

  • @Mousepiece
    @Mousepiece 3 года назад +10

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

    • @andrey-ei4px
      @andrey-ei4px 3 года назад +3

      Такая же хуйня, заебало программирование в универе

    • @ВладиславМаксимов-г9о
      @ВладиславМаксимов-г9о 3 года назад +2

      @@andrey-ei4px оо, да понимаю. Нафиг вообще это прога нужна не на программиста поступал

  • @maximusmm7723
    @maximusmm7723 10 месяцев назад +1

    Спасибо вам

  • @timursyrma
    @timursyrma 4 года назад +2

    Здравствуйте! Можете, пожалуйста, в ближайшем будущем разобрать Quick-Sort и Merge-Sort? А так, спасибо Вам за видео!! Все очень круто и понятно :)

  • @rustautopanel
    @rustautopanel 3 года назад

    Благодарен за видео!

  • @azimutjava
    @azimutjava 3 года назад

    Отличная подача!

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

    огонь!!!

  • @AnatolyF-v6c
    @AnatolyF-v6c 2 года назад

    Графика хорошо показывает алгоритм

  • @ДенисКнязев-ю9у
    @ДенисКнязев-ю9у Год назад +1

    Спасибо огромное

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

    блеск! спасибо))

  • @znedj
    @znedj Месяц назад

    Thanks.

  • @Km-pn3hf
    @Km-pn3hf 3 года назад +1

    спасибо за видео

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

    ты что Бог?

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

    spasibo vam bolshoe

  • @hiitsif
    @hiitsif 3 года назад

    Спасибо!

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

    Если в дереве всё равно сравниваются все элементы как минимум 1 раз - почему бы не заменить все эти перестановки на просто поиск максимального числа?

    • @СерегаБатенин
      @СерегаБатенин Год назад

      вот аналогично сижу и не понимаю этого... куча сравнений, постоянных перестановок туда сюда

    • @АлыИсмаилов-г1о
      @АлыИсмаилов-г1о Год назад +5

      потому что поиск максимума у тебя всегда будет занимать о(n) и для n операций выйдет о(n^2). Благодаря структуре кучи мы каждый раз получаем самый максимум в первом элементе массива (нулевом если быть точным), далее свопаем его с последним элементом, далее просеиваем этот новый первый элемент массива уже за logn т.к. на каждом уровне просеивания мы двигаемся логарифмически . В итоге получается n операций по logn. Пирамидальная сортировка хуже по скорости (на константу) чем те же быстрая и слиянием, но гораздо лучше вплане потребления памяти: в каждый момент времени в буфере находится максимум один элемент (потребление по памяти выходит о(1)). Это преимущество пирамидальной сортировки и является решающим в задачах где очень важно сортировать элементы в условиях ограничения расходуемой памяти.

    • @СерегаБатенин
      @СерегаБатенин Год назад

      @@АлыИсмаилов-г1о уф.. спасибо большое за разъяснение. Но для общего понимания для меня слияние все равно гораздо проще для понимания и реализации, чем эта) видимо надо написать или применить ее пару тройку раз тогда может уложится получше)

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

      @@АлыИсмаилов-г1о как раз тематика видео и должна была наглядно показать то что вы говорите. Но она этого не делает. По видео создаётся впечатление что сравнение происходит со ВСЕМИ элементами, что бы там не писали про сложнгости олгоритма заменяя понятные простому обывателю фразы проде "по одному сравнению на каждый элемент" буквами "On" и другими вы ясность не вносите. фактически достаточно было бы сказать что благодоря тому что пирамида "предсортирована" предыдрущей итерацией - это позволяет выполнить меньше сравнений чем при полном переборе.

  • @МаксимЕфимов-ц2т
    @МаксимЕфимов-ц2т 2 года назад +3

    святой

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

    спасибо

  • @MikeDev-Sooworr
    @MikeDev-Sooworr 5 месяцев назад +2

    Без примеров кода, польза от этого видео - минимальна.

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

      просто признайся что хотел скопипастить

    • @MikeDev-Sooworr
      @MikeDev-Sooworr 2 месяца назад +1

      @@IvanFedulov, нет.

  • @ozimandias1738
    @ozimandias1738 Год назад +2

    Фронтендер знать такое не должен - никогда в работе не пригодится. Данное знание опционально.

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

      Но все равно интересно для себя

    • @ozimandias1738
      @ozimandias1738 Год назад +2

      @@ExileHB , написал коммент только потому, что вначале автор видео сказал: "... алгоритм, который должен знать каждый программист..."

    • @zhimbura
      @zhimbura Год назад +17

      Дак он сказал каждый программист, а фронтендер не программист))

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

      Это зависит от воронки кандидатов. Если их много то обычно делают тесты на алгоритмы вне зависимости от направления : )

    • @Pinkamena-s3p
      @Pinkamena-s3p 7 месяцев назад

      ​@@zhimbura, а кто же тогда фронтендер?

  • @ЗахарЗахаров-я5г
    @ЗахарЗахаров-я5г 3 года назад

    "order by" - решает фсе!

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

    Не очень хорошее объяснение, никакие элементы на последнем этапе не "выкидываются" из дерева, а лишь переставляются с рекурсивной проверкой. Это некоторая "авторская модификация" алгоритма

    • @АлыИсмаилов-г1о
      @АлыИсмаилов-г1о Год назад +1

      мы просто длину рассматриваемого массива уменьшаем на 1 пока она не станет равно 0))) все ок он поясняет

  • @ivankrechet2331
    @ivankrechet2331 8 месяцев назад

    Ну вы хоть бы отредактировали своё выступление! Что значит "только спускаемся на уровень выше ..... спускаемся на уровень выше" ? И не надо оправдываться, что тут всё понятно, и что вы имели в виду вот именно этот или тот конкретный уровень ..... :)))

  • @yourdream-maker
    @yourdream-maker Месяц назад

    Вообще НИЧЕРТА не понял. Т.е. мы сначала строим бинарное дерево, а потом из него восстанавливаем массив в отсортированном виде?

    • @Andrey_Grishin_primera7790
      @Andrey_Grishin_primera7790 Месяц назад

      Скорее просто вводим формулу, определяющую по индексам, кто кому потомок, кто кому родитель. Таким образом мы создаем связь между элементами массива по принципу бинарного дерева. Это, например, значит, что элемент под номером 5 (согласно нумерации под массивом на видео) знает, что может работать только с элементами 10, 11 в статусе родителя и с элементом 2 в качестве потомка.
      Теперь, имея начальный массив и зная как связаны между собой его элементы, начинаем применять алгоритм, который позволяет за оптимальное количество перестановок значений подобрать порядок, соответствующий ожидаемой сортировке.

    • @igoraleksandrovich1498
      @igoraleksandrovich1498 День назад

      Да, но при этом бинарное дерево и хранится в самом массиве, а два потомка родителя или родитель потомка легко вычисляются по простой формуле.