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

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

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

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

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

  • @johnstrayk5208
    @johnstrayk5208 3 года назад +40

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

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

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

  • @cannibalirk3055
    @cannibalirk3055 4 года назад +23

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

    • @whatthepeople
      @whatthepeople 4 года назад +6

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

    • @user-lm8py5rb4m
      @user-lm8py5rb4m 2 года назад +1

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

  • @ScareTheBearYoga
    @ScareTheBearYoga 5 лет назад +11

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

  • @zoyapleskatsevich9150
    @zoyapleskatsevich9150 5 лет назад +4

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

  • @user-po9ie2rz4f
    @user-po9ie2rz4f Год назад

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

  • @mot3030
    @mot3030 4 года назад +3

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

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

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

  • @user-sh8bl3ij9v
    @user-sh8bl3ij9v 5 лет назад +2

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

  • @user-kh6sr8tp1m
    @user-kh6sr8tp1m 2 года назад +2

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

  • @exdeniz
    @exdeniz 6 лет назад +3

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

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

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

  • @a.osethkin55
    @a.osethkin55 3 года назад

    Супер!

  • @Isa-oo8mz
    @Isa-oo8mz 5 лет назад +2

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

  • @artalar
    @artalar 6 лет назад +4

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

    • @ruslanvolovik2745
      @ruslanvolovik2745 4 года назад

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

    • @artalar
      @artalar 4 года назад

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

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

    thank you!

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

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

  • @Nagibator45
    @Nagibator45 6 лет назад +4

    Спасибо ))

  • @user-dv9fk1hd3s
    @user-dv9fk1hd3s 4 года назад +16

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

  • @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]
      ...но с другой стороны Лектор же в конце видео поясняет, что можно и не учитывать быстродействие, когда речь о небольшой погрешности и маленьких объемах, в пользу читаемости и понимания.

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

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

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

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

  • @user-tx7rp3hb5j
    @user-tx7rp3hb5j 5 лет назад +2

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

    • @redeyes256
      @redeyes256 4 года назад

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

  • @MoksDev
    @MoksDev 5 лет назад +1

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

  • @kristinam2480
    @kristinam2480 5 лет назад

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

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

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

  • @artalar
    @artalar 6 лет назад +18

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

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

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

  • @user-dv9fk1hd3s
    @user-dv9fk1hd3s 4 года назад

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

    • @tym32167
      @tym32167 4 года назад

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

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

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

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

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

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

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

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

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

  • @DmitryLoginov
    @DmitryLoginov 4 года назад

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

    • @user-mr-m12312
      @user-mr-m12312 4 года назад

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

    • @DmitryLoginov
      @DmitryLoginov 4 года назад

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

  • @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

    • @user-ti5vv5rt2e
      @user-ti5vv5rt2e 4 года назад

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

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

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

  • @hydrock9738
    @hydrock9738 6 лет назад +6

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

  • @readyred8782
    @readyred8782 4 года назад +22

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

    • @user-vd3rf1yg4p
      @user-vd3rf1yg4p 4 года назад +1

      Ready Red так и есть)

    • @artemkonyukhov6635
      @artemkonyukhov6635 4 года назад

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

    • @user-kh6sr8tp1m
      @user-kh6sr8tp1m 2 года назад +1

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

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

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

  • @aslanaslan4394
    @aslanaslan4394 4 года назад

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

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

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

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

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

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

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

  • @user-wq2oj8dl1m
    @user-wq2oj8dl1m 4 года назад +15

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

  • @romanliapkin5174
    @romanliapkin5174 5 лет назад +12

    Уныло

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

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

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

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

  • @aalolooo
    @aalolooo 6 лет назад +4

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

    • @heyiamvi
      @heyiamvi 5 лет назад +2

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

    • @aalolooo
      @aalolooo 5 лет назад +2

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

  • @wolfich4684
    @wolfich4684 4 года назад +3

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

  • @user-cg1pq2kh6t
    @user-cg1pq2kh6t Год назад

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

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

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

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

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

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

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

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

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

  • @user-yq2mj6mq3e
    @user-yq2mj6mq3e Год назад

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