013. Алгоритмы и структуры данных - Артём Вурсалов

Поділитися
Вставка
  • Опубліковано 8 жов 2024
  • Расскажу, что такое алгоритмы и структуры данных, и зачем они нужны. Мы разберём несколько популярных алгоритмов, оценим их вычислительную сложность, а также поговорим о стандартных структурах в JavaScript.

КОМЕНТАРІ • 82

  • @futdsrs3391
    @futdsrs3391 2 роки тому +6

    Подача отличная! Такое чувство, будто лектору интересно, и он пришёл рассказать про то, в чем разобрался сам, от чего с лёгкостью объясняет людям!! Спасибо!

  • @johnstrayk5208
    @johnstrayk5208 3 роки тому +42

    Начать нужно было со слов: « В принципе похуй, но раз вы пришли то вот...» . Мне лектор вообще доставил)

    • @johnstrayk5208
      @johnstrayk5208 3 роки тому

      @Brendan Abdullah стоп фид ас виз зэ щет лайк зис

  • @cannibalirk3055
    @cannibalirk3055 4 роки тому +23

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

    • @whatthepeople
      @whatthepeople 4 роки тому +6

      Многие жалуются ибо им клоунаду подавай - недалёкие люди. У человека грамотная и чёткая речь, рассказал без воды и с хорошими примерами. Единственная проблема - слегка тихий звук, пришлось надевать наушники.

    • @СергейЦветов-н4н
      @СергейЦветов-н4н 2 роки тому +1

      Вроде коменты положительные

  • @EllieYogaBear
    @EllieYogaBear 5 років тому +12

    Очень доступно изложен материал по оценке сложности, наконец-то удалось понять эту тему) Спасибо за крутую лекцию

  • @СветланаЛ-ь9щ
    @СветланаЛ-ь9щ Рік тому

    Спасибо! Все очень доступно и понятно! Отличная презентация!

  • @zoyapleskatsevich9150
    @zoyapleskatsevich9150 5 років тому +4

    Долго искала хорошее видео, где подробно и доходчиво объясняются алгоритмы. И вот нашла! Спасибо!

  • @mot3030
    @mot3030 4 роки тому +3

    Просто лучшее видео об алгоритмах в русскоязычном ютубе! Особенно за советы в конце, спасибо

  • @grow_pigs
    @grow_pigs 3 роки тому +1

    Спасибо за лекцию!

  • @РоманМосолов-ы1ш
    @РоманМосолов-ы1ш 5 років тому +2

    Спасибо за знания.

  • @exdeniz
    @exdeniz 6 років тому +3

    Спасибо за лекцию. Было бы здорово подсветить сложность в будущих презентаций. От зеленого до красного в зависимости от сложности.

  • @LikaLika-r9j
    @LikaLika-r9j 3 роки тому +2

    14:34 при переписывании массива сложность алгоритма возрастает в n^2 раза, а не просто в n раз
    n сложность это когда сколько данных зашло, столько действий и выполнилось

  • @aHgerRyk
    @aHgerRyk 3 роки тому +2

    метод reverse переставляет значения массива на месте и поэтому новый массив не выделяется (не создаётся)

  • @Fairuza22
    @Fairuza22 Рік тому

    thank you!

  • @yuTimer
    @yuTimer Рік тому

    поздно наверное писать, но разве .reverse не возвращает ссылку на массив? Почему выделяется новая память?

  • @tashchan
    @tashchan Рік тому

    4:50
    По поводу выделения памятью методом reverse() не очень понятно. Судя по MDN этот метод меняет массив на месте и по логике не должен выделять доп. память:
    MDN: "The reverse() method reverses an array in place and returns the reference to the same array"

  • @a.osethkin55
    @a.osethkin55 3 роки тому

    Супер!

  • @artalar
    @artalar 6 років тому +4

    По символьное сравнение в строках происходит при операторе "больше", "меньше". Дальше не уверен, но строки в движке хранятся не индивидуально, для дублирования, а ~каждая одинаковая подстрока - это одна и та же строка (в смысле ссылка на одно и то же поле в памяти). Так что строгое сравнение строк не посимвольное, а по ссылке

    • @ruslanvolovik2745
      @ruslanvolovik2745 4 роки тому

      Строки хранятся не в движке, и по ссылке думаю не сравниваются

    • @artalar
      @artalar 4 роки тому

      ​@@ruslanvolovik2745 конечно не хранятся, а представляются, я имел в виду. По поводу работы со строками у Вячеслава Егорова где-то хорошо рассказывалось, сейчас не могу найти, но впринципе информация гуглится: stackoverflow.com/questions/40512393/understanding-string-heap-size-in-javascript-v8

  • @alexeyshuster7418
    @alexeyshuster7418 2 роки тому

    Здравствуйте! Хочу повысить свои знания в алгоритмах и структурах данных, так как когда-то изучал этот раздел и сдавал зачет.

  • @Isa-oo8mz
    @Isa-oo8mz 6 років тому +2

    Где можно прочитать про выделения памяти под массивы и про то как работает push с памятью (то что рассказывается в видео)?

  • @Nagibator45
    @Nagibator45 6 років тому +4

    Спасибо ))

  • @DmitryLoginov
    @DmitryLoginov 4 роки тому +1

    binary_search: arr[mid] >= search почему тут не строгое сравнение? не породит ли это несколько дополнительных итераций в случае если search будет равен среднему элементу? Обычно еще добавляют требование что у типа есть только Less. хотя в случае JS не уверен.

    • @likle7163
      @likle7163 3 роки тому

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

    • @totalcount
      @totalcount 3 роки тому +1

      Можно дописать условие в начале цикла
      if (arr[mid] === search) return arr[mid]
      ...но с другой стороны Лектор же в конце видео поясняет, что можно и не учитывать быстродействие, когда речь о небольшой погрешности и маленьких объемах, в пользу читаемости и понимания.

  • @Вячеслав-ф2ю6и
    @Вячеслав-ф2ю6и 5 років тому +2

    Где можно побольше узнать о том, как используется память в подобных методах и циклах?

    • @redeyes256
      @redeyes256 4 роки тому

      посчитать самому, почитать книгу по алгоритмам, например "Алгоритмы проектирование и анализ", можно зайти на сайт e-maxx.ru/algo/ а можно на algolist.manual.ru/

  • @MoksDev
    @MoksDev 5 років тому +1

    годно, спасибо.

  • @СергейПресняков-о4р
    @СергейПресняков-о4р 4 роки тому +16

    Есть еще факториальная сложность O(n!)

  • @kaifaty
    @kaifaty 2 роки тому +1

    reverse() не возвращает новый массив.

  • @kristinam2480
    @kristinam2480 5 років тому

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

    • @totalcount
      @totalcount 3 роки тому

      Не хранится, если специально не сохранять

  • @followthewhiterabbit982
    @followthewhiterabbit982 Рік тому

    Если для символа в JS выделяется 2 ячейки (2 байта), то почему тогда всё слово ЧАЙКА занимает 5 ячеек, а не 10?

  • @artalar
    @artalar 6 років тому +18

    `reverse` в ES мутирует

  • @СергейПресняков-о4р

    А разве для получения длины массива не надо пересчитать количество его элементов? То есть пробежаться по всему массиву что даёт сложность O(n)

    • @tym32167
      @tym32167 4 роки тому

      Нет, не надо. Длина массива меняется только во время добавления/удаления элементов, то есть вы можете узнать длину массива за константу времени.

  • @kaifaty
    @kaifaty 2 роки тому

    А автор советуя "Искусство программирования" прям сиял ))

    • @deniskhakimov
      @deniskhakimov Рік тому

      Он серьёзно эту серию книг посоветовал? О_О
      Тогда может он не "сиял", а старался изобразить классический _trollface?_
      Она же у большинства отобьёт всё желание кодить! 😆
      IMHO, начинать надо с чего-то простого и в то же время фундаментального, вроде книг Роберта Седжвика или Тим Рафгардена.

  • @DmitryLoginov
    @DmitryLoginov 4 роки тому

    какое n/2 если там просто всегда два числа не зависят от длины строки O(1) по памяти

    • @user-mr-m12312
      @user-mr-m12312 4 роки тому

      n/2 это про время было.

    • @DmitryLoginov
      @DmitryLoginov 4 роки тому

      @@user-mr-m12312 да был не прав. это про кол-во итераций а не память

  • @trushin
    @trushin Рік тому

    5:00 `reverse` возвращает тот же массив

  • @saimonshaplygin7867
    @saimonshaplygin7867 3 роки тому +1

    --В реализации бинарного поиска --15:55-- нельзя возвращать -1, так как переданный массив может включать в себя элементы равные значению -1-

    • @totalcount
      @totalcount 3 роки тому +1

      И че? Причем тут значение элемента, читай код лучше

    • @saimonshaplygin7867
      @saimonshaplygin7867 3 роки тому

      ​@@totalcount -это ошибка, а так ниче. зато читается лучше-

    • @totalcount
      @totalcount 3 роки тому

      @@saimonshaplygin7867 нет ошибки никакой, не надо путать людей)

    • @totalcount
      @totalcount 3 роки тому

      @@saimonshaplygin7867 вот у тебя есть массив 1,2,3,4,5 и ты ищешь в нём 5, код тебе не возвращает по нахождению 5, он вернет тебе индекс === 4, это понятно?

    • @saimonshaplygin7867
      @saimonshaplygin7867 3 роки тому +2

      ​@@totalcount согласен, так как речь идет в задача про индексы. коммент исправил. спасибо, что поправил 👍

  • @wongsaine2979
    @wongsaine2979 4 роки тому

    Я ошибаюсь или в блок-схеме ошибка? 6:09

    • @Aliaksei-c7t
      @Aliaksei-c7t 4 роки тому

      Да. От «l++; r--;» стрелка должна идит к «l < r»

  • @denissavenok6051
    @denissavenok6051 3 роки тому

    1:55 - jpeg не структура данных, а алгоритм сжатия.

  • @МихайТуриев
    @МихайТуриев 13 днів тому

    Математика в форме кода js.

  • @hydrock9738
    @hydrock9738 6 років тому +6

    Очень тихо только

  • @aslanaslan4394
    @aslanaslan4394 4 роки тому

    Что за язык это? Джаваскрипт? Я просто новичок

  • @readyred8782
    @readyred8782 4 роки тому +22

    Подача кошмарная! Такое чувство, что лектору это все дико неинтересно и скучно, но руководство заставило его прийти, отчего повествует он "на отеб*сь".

    • @ВаняФедченко-ф1ы
      @ВаняФедченко-ф1ы 4 роки тому +1

      Ready Red так и есть)

    • @artemkonyukhov6635
      @artemkonyukhov6635 4 роки тому

      А по контенту есть вопросы?

    • @LikaLika-r9j
      @LikaLika-r9j 3 роки тому +1

      Люди вокруг же обязаны прыгать и развлекать таких как ты. Какой кошмар что они об этом забывают
      Мужик суть мироздания программирования описал, если на секунду

    • @futdsrs3391
      @futdsrs3391 2 роки тому

      Он просто в спокойном состоянии объяснил тему, медленно, подробно и всё ясно, чтобы даже у таких, как ты не возникло вопросов! Лектору спасибо большое! 👍

  • @amigo4884
    @amigo4884 3 роки тому +2

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

    • @totalcount
      @totalcount 3 роки тому

      Amigo, если захочешь реализовать комментарий под видео, то, пожалуйста, не надо. Используй возможности стандартных фраз из словаря для хороших комментариев.

    • @deniskhakimov
      @deniskhakimov Рік тому

      А если свой алгоритм работает в разы быстрее? ;)

  • @ЕвгенийБурлов
    @ЕвгенийБурлов 4 роки тому +15

    Лектору походу очень не нравится то что он делает

  • @wolfich4684
    @wolfich4684 4 роки тому +3

    Уныло но сколько лайков то поставлено . Удивительно.

  • @romanliapkin5174
    @romanliapkin5174 5 років тому +12

    Уныло

    • @romanliapkin5174
      @romanliapkin5174 3 роки тому

      @Иван Иванов при чем тут программирование, он преподает уныло, почитать Википедию я и так могу

    • @romanliapkin5174
      @romanliapkin5174 3 роки тому

      Ну например cs 50@Иван Иванов

  • @Antonym-b5o
    @Antonym-b5o 2 роки тому

    Мда, мучают бедных фронтов в Яндексе

  • @aalolooo
    @aalolooo 6 років тому +4

    НЕкомфортно слушать. Вы проверяете то что выкладываете ?

    • @heyiamvi
      @heyiamvi 6 років тому +2

      Простите, не могли бы вы дать более конструктивный комментарий: Почему именно вам не комфортно, что не устроило?
      IMHO: Артем за полчаса дал обзорную лекцию по алгоритмам и базовым структурам (JS), с теми минимальными знаниями, которые требуются разработчику, чтобы в случае, если потребуется решать задачи оптимизации, он [разработчик] мог быстро в это влиться и начать изучать углубленно этот класс вопросов.
      Рекомендую слушать на x1.25 - у Артема размеренный темп, поэтому воспринимать с ускорением чуть проще.

    • @aalolooo
      @aalolooo 6 років тому +2

      Спасибо за обратную связь. Когда прослушиваешь на смартфоне, очень тихо слышно Артема. Нужно прислушиваться, а когда делаешь это долго становится не комфортно. На смартфонах нет такого диапазона громкостей как на компьютере. Сейчас включил эту лекцию на пк - можно увеличить громкость до комфортного уровня. В ближайшее время обязательно просмотрю эту лекцию.

  • @bor3007
    @bor3007 4 роки тому +2

    Идет 21 век... 2020 год, в реальной работе программиста эту хрень никто не юзает в чистом виде максимум копипаст с стака , но интеравюеры до сих пор требуют знать это наизусть думая что это круто🤮🤮🤮

    • @ruslanvolovik2745
      @ruslanvolovik2745 4 роки тому +2

      Все понятно, что у тебя один ангуляр

    • @ilnurryazhapov
      @ilnurryazhapov 3 роки тому

      у меня тоже ангуляр)) но на собесе просят знать

  • @andrianocelentano999
    @andrianocelentano999 3 роки тому

    Что же у вас у всех информатиков какой то дефект речи просто у каждого пипец -жизнь без логопеда 😂

  • @Илья-к6е5и
    @Илья-к6е5и Рік тому

    Вот хули он умничает! Вы посмотрите! Вид такой будто мы тут все дураки, а он нет! Мой вердикт: на фронт под Бахмут!