Алгоритмы и структуры данных ПОЛНЫЙ КУРС на JAVASCRIPT
Ғылым және технология
В этом ролике мы кратко пройдемся по самым популярным алгоритмам, таким как поиск, сортировка, обходы графа, деревьев, кеширование и рассмотрим основные структуры данных: массивы, списки, деревья, стек, очередь, сет и мэп. Js алгоритмы и структуры данных. JavaScript алгоритмы.
Мой курс "Продвинутый Frontend. В production на React" - ulbitv.ru/frontend
Исходный код урока - github.com/utimur/algs_and_st...
Таймкоды:
00:00 - План на урок
01:20 - Что такое алгоритм? Оценка сложности
06:30 - Линейный поиск
08:20 - Бинарный поиск. Итеративный подход (цикл)
12:05 - Сортировка выбором. SelectionSort
15:23 - Сортировка пузырьком. BubbleSort
17:40 - Рекурсия. Рекурсивные функции. Факториал. Числа Фибоначчи
20:15 - Быстрая сортировка. Сортировка Хоара
27:40 - Графы. Поиск в ширину
29:19 - Структура данных Очередь
32:37 - Матрица смежности
33:05 - Алгоритм Дейкстры для поиска кратчайшего пути
41:00 - Рекурсивный обход дерева n-размерности
43:04 - Итеративный обход дерева n-размерности
43:20 - Структура данных Стек
45:15 - Кеширование вычислений
48:11 - Массивы. Сложность основных операций
49:09 - Связный список. Простая реализация и теория
53:31 - Бинарное дерево поиска. Простая реализация и теория
58:01 - Set и Map
Поддержать меня и мой канал вы можете по ссылкам ниже.
Patreon/boosty (доступ к бонусам) - boosty.to/ulbitv
Qiwi кошелек - qiwi.com/n/BODYE821
Яндекс деньги - yoomoney.ru/to/4100116193037469
Пікірлер: 794
Друзья, таймкоды в описании!) Приятного просмотра! Исходный код урока в описании!
@UlbiTV
3 жыл бұрын
@Арслан Ахметжанов спасибо друг, по большей части структуру брал из книги «грокаем алгоритмы»!)
@topsecret9174
3 жыл бұрын
Йипать капать, дядь, не иначе как ты апгрейднутаяя версия реинкарнации Zorax'a ☺ Не обессудь, я не хотел тебя оскорбить, т.к. многие люди не любят когда их сравнивают с кем либо, пусть даже и в положительном контексте. Просто очень похожая манера подачи и изложения материала, но гораздо более продвинутого и с практическим уклоном. Очень круто объясняешь, четко, последовательно, структурированно да еще и доступным языком. Всего хорошего тебе, спасибо, что делишься своими знаниями.
@user-iq9ll8lz9m
3 жыл бұрын
@@UlbiTV реализацию алгоритма Дейкстры ты обьяснил понятнее, хотя вроде бы код такой же) спасибо)
@viktoriaviktoria3178
3 жыл бұрын
Спасибо!
@o_opedro4044
2 жыл бұрын
Круто 👍. Спасибо.
Иди обниму! Я ровно в эту секунду сижу в Гугле и ищу норм курс по алгоритмам! Это мистика какая-то!
@UlbiTV
3 жыл бұрын
Да я просто чувствую, что вам нужно)) Обнял!)
@devorer77
3 жыл бұрын
выделил время, послушал курс. чо сказать - агонь! то, что курс длится всего час, не означает, что его усвоить можно тоже за час. нужно разделить на логические куски, послушать, повторить код, потом реализовать код самостоятельно. после этого переходить к следующей части. огромное спасибо за труд.
@UlbiTV
3 жыл бұрын
Спасибо Артем) Да, для тех кто новичек в этой теме курс может сложноватым показаться, а на самом деле это азы
@proglife3936
3 жыл бұрын
@@UlbiTV У вас была задача где вы с графами работали и если да, то что за задача.
@user-kj7qj8hk2s
2 жыл бұрын
@@UlbiTV не то слово) смотрю и вижу фигу) ну что то воспринимается, но как это писать и с чего начинать это треш пока
Идея, реализация + отличная подача = это то, о чем мы так давно мечтали
ахах, хитрый) в сортировке выбором смотрю на эту array[i] во вложенном цикле по j, потом ты запускаешь в ноде - и бах! всё работает :D я сижу такой в непонятках вообще. а ты там в тихую вырезал момент, где исправляешь i на j :D лучше проговаривай явно такие моменты, чтобы люди не путались. а за видео спасибо. чувак, у тебя неоправданно мало подписчиков. но, думаю, долго это не продлится. продолжай!
@UlbiTV
3 жыл бұрын
Ааххахахахах))) Очень внимательный) Да, обычно я такие моменты обговариваю, тут как-то упустил) Зато убедился, что есть внимательные подписчики!
@Johnhnhn2012
3 жыл бұрын
полчаса сидел и недоумевал, почему это работает и как такое возможно, думал я совсем тупой и не понимаю почему arr[i], вместо arr[j]. Зашел в комменты чисто, чтобы проверить, что кто-то возмутился тоже))
@user-tm2tk3np1f
3 жыл бұрын
Тоже зашел в комменты найти что же я упустил)
@blgarOk
2 жыл бұрын
@@UlbiTV Все мы люди. Любой может сделать опечатку. А вот втихую исправлять такие опечатки, мягко говоря, нехорошо. Но ты и сам, думаю, это понимаешь) За видос лайк улетел - контент годный 👍🏻
@user-li2xm9pr7f
2 жыл бұрын
Реально! Я себе чуть когнитивный диссонанс не заработал, хорошо в комментарии посмотрел что не один я заметил... А как же не заметить, сам же в голове компилируешь каждую задачу и как тут такое пропустить...
Очень круто! Хотелось бы так же увидеть разбор более сложных алгоритмов.
Спасибо за подробное объяснение базовых алгоритмов и структур данных, а так же их примеров на javascript! Очень помогло для подготовки к собеседованию (Оценка сложности, Бинарный поиск, Сортировка выбором, Сортировка пузырьком, Графы, Стек, Массив, Связный список, Бинарное дерево)
Огромное человеческое спасибо за труд! Приятно смотреть и учиться!
Как по книге "Грокаем алгоритмы". Только там на питоне написано. Спасибо за курс!
@UlbiTV
3 жыл бұрын
Да, ее за основу брал) спсасибо!
@shsh01212
3 жыл бұрын
на гитхабе все примеры лежат на любом языке, в т.ч и на js
@alexandrcorbin1709
2 жыл бұрын
Все что есть в этом ролике - ищется в гугле ровно за 2 минуты.
@babush6
2 жыл бұрын
@@alexandrcorbin1709 и чо ?
@firewatermoonsun
2 жыл бұрын
Я предпочитаю смотреть, поэтому автору ролика большое спасибо.
Спасибо, так хорошо, просто, быстро и лаконично мне ещё не объясняли! Это очень полезное видео, лучшее, что видел. Огромная благодарность автору за то, что делитесь своими знаниями! Thumb up!
@UlbiTV
2 жыл бұрын
Благодарю за поддержку!
Огромное спасибо за видео. В видео на 14:25 в строке 8 опечатка - мы перебираем массив array[j] (внутренний цикл), а не array[i]
@user-gb7dt4xf3f
Жыл бұрын
кайф, 2 дня пытался понять почему не работает. Зачем исправлять и потом делать склейку уже с правильным вариантом? Начинающие потом сидят и ломают голову.
@Goddamn_Right
10 ай бұрын
Тоже обратил внимание на эту магию вне Хогвартса. Несколько минут пытался разобраться, почему оно вообще работает, как обычно, ответ нашелся в комментах))
@kostvolume
7 ай бұрын
14:34 склейка
@ondreeey3004
6 ай бұрын
Благодаря тебе спасен мой вечер и несколько дестяков тысяч нервных клеток. Спасибо, добрый человек!
@deanwichester6412
6 ай бұрын
27:02 тоже ошибка ,стек переполнится
Благодарю Вас! Желаю чтобы у вас в жизни все было хорошо! ТО ЧТО НАДО🙌
Тимур - человек с большой буквы, очень классно объясняете, спасибо большое) Успехов вашему каналу ✊
Спасибо огромное!!! Начал изучать алгоритмы и не знаю с чего подступиться, решил посмотреть предварительно данную тему здесь, и как всегда, не ошибся! Всё строго по делу, без воды, чётко поставленная речь, отличная подача материала. Начал изучать книгу по алгоритмам, отталкиваясь от данного урока лучше усвоение проходит)
Спасибо огромное за твою работу!!! Уже не первый ролик, который упрощает жизнь - не только в плане разработки , как таковой
Спасибо, очень понравилось, что в одном видео все основные структуры и алгоритмы представлены + на JS. Отлично для обзора и повторения. Но как новичку сами алгоритмы (код) сложнова-то воспринимаются. Хорошо бы еще каждый разобрать подробнее на примере более простым языком, возможно начать с более простого примера и подвести к решению.
@lumaksaic2853
11 ай бұрын
грокаем алгоритмы, там код на python, правда версия 2, ну всё же, проще
Трудно было сдержать улыбку, когда Тимур искал кротчайший путь до точки "G" 😁
@den2811
Жыл бұрын
😂😂😂
@den2811
Жыл бұрын
нашел - это главное 😂
@user-ye3vi2ss4i
Жыл бұрын
Путь в точку G за 5 у.е.
@dexterholland4430
Жыл бұрын
Первое, о чем я подумал, когда услышал, это то, что 100% есть чел, который уже запилил этот коммент 🤣🤣
@user-cg1pq2kh6t
4 ай бұрын
автор не понял вашего смеха, поэтому и знает алгоритмы
Класс, то что нужно, четко, без воды. Обожаю твои видосы
Просто шикарная подача материала, большое спасибо!
Единственный канал, ролики которого я качаю и храню локально на случай, если отрубят ютуб) Тимур, искренне благодарю тебя за твои труды. Ты делаешь невероятно полезный контент, о чем свидетельствует многотысячное комьюнити вокруг тебя. Крепкого здоровья тебе. Живи вечно 🤝💪
@trueslav3999
Жыл бұрын
Факт
@user-bm1fq1ss6x
3 ай бұрын
Если отрубят ютуб это будет означать что ничего из подобной информации тебе уже не пригодиться, лучше тогда уж сохраняй, как развести огонь имея две палки ))))
Тимур, в очередной раз хочу поблагодарить за твой труд! Вначале видео я слышал древний хинди, через пару-тройку итераций я уже начал слышать знакомые слова)) Еще итераций 10-15 и мы будем говорить на одном языке!
Спасибо, Тимур! Отличный курс для новичков, многое стало гораздо понятнее
Огромное спасибо за такой формат подачи информации!!!
Спасибо тебе огромное за то, что ты делаешь, за этот канал! Ты приносишь огромную пользу людям!
Тимур, спасибо за Ваш труд! Пару дней назад только начал погружаться в алгоритмы и вообще ничего не понимал в части реализации, сегодня все прекрасно обмозговал и, наконец-то, дошел что и как в этих ваших алгоритмах. Спасибо Вам!
Крутой подгон. Спасибо большое. И да, поздравляю с 1к. )
@UlbiTV
3 жыл бұрын
еее, спасибо большое друг!)
@TheProfessionalGambler
3 жыл бұрын
@@UlbiTV ух ты, уже 1к, вроде только вчера была сотня или две. Поздравляем 🥳🎉🎊
@UlbiTV
3 жыл бұрын
@@TheProfessionalGambler спааааассиииииибооооо!!!!!)))))) лучшие!!!
Очень понравился материал. Объяснено доступно и на хороших примерах. Есть, конечно, опечатки, но и них другие написали, а вот что хотелось бы, так это упоминания о балансировке двоичного дерева. Без нее дерево вполне вырождается в связный список с потерей всяких преимуществ. Также, думаю, достойным было бы упоминание, в контексте quickSort, так называемые in place вариант алгоритма без выделения дополнительной памяти. Но, вне всякий сомнений, видео обязательно к просмотру! Спасибо автору!
Парнишка гений. Так точно, доступно и просто , не каждый препод сможет подать материал. Лайк, подписка!
Спасибо! особенно за "путь из точки А в точку G" и сумму элементов дерева "69" ;D
@eduardtobilko8958
2 жыл бұрын
хах, и поиск кратчайшего пути к точки G :D
@demiurgen13
Жыл бұрын
К тому же к точке G мы получаем доступ всего за 5 условных единиц, что я считаю очень выгодно 😁
Спасибо огромное за твой труд! Невозможно объяснить словами, насколько полезны твои видео. Готовлюсь к собеседованиям, и в одном месте повторить всю базу по алгоритмам с понятным объяснением, так еще и на js... ты лучший и точка))
Спасибо большое! Невероятно эффективная скорость и емкость подачи информации! Очень хотелось бы услышать разбор паттернов GoF
Спасибо за урок. Один из немногих, к которому, как и сказал автор, полезно будет возвращаться.
Как раз готовлюсь к собеседованиям, и тут нашел твой ролик, где все базовые алгоритмы собраны в одном месте! Просто лучший
спасибо большое за такой концентрированный материал, без воды все по делу, все понятно, примеры, просто огонь!
@UlbiTV
3 жыл бұрын
Спасибо дружище!) Старался для вас!
Очень крутой видос, спасибо! Вроде в универе все это проходили, но тут более структурировано и без воды.
@catsapp
2 жыл бұрын
Это говорит только об одном, в вашем универе не умеют преподавать
Очень интересно, про опечатку в selection sort уже написали, я бы хотел добавить замечание по bubble sort подходу, так как там сложность такая же как и при selection sort методе. При каждом проходе первого цикла нет смысла проходить второй цикл полностью, так как верхний элемент уже будет отсортированным. Если применить: j < array.length - i то сортировка проходит за 1378 итераций, а не 2704. Да, по сути как вы и писали это все равно O(n*n), но все же на практике разница в два раза.
@romanryaboshtan9270
2 жыл бұрын
правильное замечание, молодец
@KoDo
2 жыл бұрын
Перед тем как написать это замечание решил глянуть, не мог же я один это заметить... :) Еще момент , так же нет смысла крутить цикл до конца, если нет ни одного перемещения "пузырька". Для частично отсортированных массивов это имеет важное значение. Пузырьковая все же почти всегда быстрее чем обычным перебором, хоть и не значительно
Лучшее объяснение алгоритмов! Спасибо!
Спасибище!!!! Наконец то доступным языком. Лайк и подписка сразу
Никак не могла понять, как писать код для алгоритма Дейкстры. 3 раза пересмотрела эту часть. Спасибо, спасибо за такие видео! Просто лучший в своем деле 👍
Спасибо за видео. Очень нравится кодовое пояснение на js , сразу легче информация воспринимается.
@UlbiTV
3 жыл бұрын
Спасибо!) рад что полезно!
Три дня потратил на это видео, оказалось очень полезным! Теперь грокать алгоритмы по книге надеюсь будет легче.)) Спасибо!
@UlbiTV
3 жыл бұрын
Спасибо друг!) Рад что полезно!)
@user-th4qi8iv3q
Жыл бұрын
как успехи
@adam-front
Жыл бұрын
@@user-th4qi8iv3q уволили его
@runar9118
11 ай бұрын
@@adam-front почему уволили?
@NelNik
5 ай бұрын
@@runar9118грокнул сервер на работе
Вау!) Вот это контент) Спасибо большое за такой полезный материал!
Все здорово. Как будто по быстрому перечитал грокаем алгоритмы, но с примерами на js.
Благодарю! Лайк на месте. Урок на высоте!!! Великолепен, нагляден, понятен.
Спасибо за труды! Успехов в развитии
Спасибо за курс по алгоритмам! Очень получилось насыщенно и полезно
Бро, ты как всегда радуешь) поддержу комментарием, спасибо за контент!
Круто. Ценный материал и хорошая подача. Спасибо.
Огромный поклон автору, желаю тебе успеха в твоих делах! Спасибо за твою работу!
Видео конечно Огонь, Спасибо! 1) Считаю что на 13:31 допущена ошибка в строчке 8 , которую хорошо показывает дебаг. строчка 8 должна быть вот такая чтобы код чтото сортировал if (array[i] > array[j]) {.... в вашем примере здесь происходит сравнение одной и той же ячейки массива в каждой интерации , и результат условия всегда False. 2) Считаю что на 16:19 допущена ошибка на строчке 6 , , которую хорошо показывает дебаг. во вложенном цикле должно быть j=i а не j=0 поправьте меня если я ошибся
@letonik72
2 жыл бұрын
Тоже ее сразу заметил и чуть не офигел, когда он получил отсортированный массив.. Начал переписывать код, но потом все же заметил как он незаметно в вырезанном моменте видео меняет i на j.
@smittychannel3252
2 жыл бұрын
я не мог понять .... полностью повторил код и нет сортировки(пока вдуплил аж вспотел. "Ну на видео сортирует ,ошибок нет))".Мозг говорит мы сравниваем две одинаковые переменные .....(Я) как так? на видео все ок ...Отстань))
@yuriyshevtsov2467
2 жыл бұрын
хорошо что глянул коменты.. а то все никак не выходило.. вроде бы не должно работать а в видео работает) спасибо!
@mighty_osaker
2 жыл бұрын
По поводу второго пункта: должно быть j < array.length - i, т.к. самый большой элемент мы переносим в конец массива, и там сортировать уже смысла нет. И тогда получается намного эффективнее, хоть и все еще очень медленно. Сортировка выбором эффективнее, т.к. не меняет элементы местами при каждом случае.
@d_alex
Жыл бұрын
@@mighty_osaker тоже увидел (на bubble_sort(arra)).. когда решил на Python повторить, циклы, т.к. резанула конструкция j=0; l
Автор лучший человек в мире для меня, помогает понимать такие вещи что очень страшные но если долго стараться то становиться не страшно
Отличное видео! И классное объяснение! Наконец-то разобрался в алгоритмах! Большая просьба сделать что-нибудь похожее по паттернам
ты просто герой. реально вкладываешься это видно. спасибо за труд. здоровья бро
Обожаю твои видео ты способен хорошо, просто, понятно и быстро объяснять да и еще делом
Спасибо, ёмко и понятно. Продолжай, у тебя отлично получается.
Очень хороший обзор базовых алгоритмов. Полезно посмотреть на возможную реализацию
Как давно я искал объяснение самых популярных алгоритмов для маленьких и отсталых, как я. Спасибо !
Как всегда лайк, и длинннннннныыыыыый комментарий в поддержку автора. Бог преподавания и маэстро краткости, Тимур.
Ты крутой, мне очень нравится подача материала! Редакс прямо усвоился хорошенько, просто и без воды)
@UlbiTV
3 жыл бұрын
Спасибо друг) стараюсь, очень рад, что мои гайды помогают! Успехов!
я долго думал на счет восьмой строки на 14:30, оказался косячок у тебя, монтируй сразу нормально. Спасибо за материал
Все есть на этом канале. И алгоритмы и фреймворки и передовые best practice. Спасибо Тимур!
Спасибо , Тимур👾❤️Как всегда на высоте 👍🏻👍🏻👍🏻
@UlbiTV
3 жыл бұрын
Спасибо, Эзам, очень рад слышать!
Парочка дополнений)) В случае с recursiveBinarySearch можно по умолчанию параметры сделать start = 0, end = array.length. Тогда можно спокойно вызывать функцию как recursiveBinarySearch(array, 10). Так же не учтен базовый случай if (start > end) return -1;. Иначе при передаче несуществующего в массиве элемента начнется бесконечная рекурсия. А так спасибо за классный контент. Мужик, ты крут))
Шикарный урок! Благодарю!
Видео крутое, спасибо за него! на протяжении всего видео, когда озвучивалась задача для конкретного алгоритма ставил на паузу, и делал свою реализацию. Немного расстроился, на поиске в ширину и алгоритме Дейкстры, что задача звучит как найти кратчайший путь, и я повозился на том, чтобы функция именно выводила этот кратчайший путь, а реализации в видео проверяют только возможность прохождения от точки до точки, и возвращают минимальную стоимость, но не выводят сам кратчайший путь. А хотелось сравнить свою реализацию. Но в остальном всё круто. Спасибо, спустя два года)
Спасибо за видео! Самый лучший разбор, что я видел!
Понятное описание, всё доступно, взял Ваш файл за альманах!)
Привет. Думал будет просто про алгоритмы как у всех, как первая половина видео, а тут столько всего. Великая работа. Как минимум ты не просто озвучил книгу, но в хорошей форме донес и объяснил нюансы. пока еще нахожусь в состоянии просмотра.
@UlbiTV
3 жыл бұрын
Привет) Старался вместить как можно больше в один ролик) спасибо!
Замечательно подан материал. Искренне восхищаюсь!
@UlbiTV
3 жыл бұрын
Благодарю!)
отличный курс. все что надо в одном месте. спасибо!
Отличные объяснения, доступно, понятно. Спасибо!
Брооо, приветствую! Был с тобой с первых видео, часто смотрел ролики и предрекал стони тысяч просмотров) Сейчас захожу на ютьюб редко, но вижу что на сотни тысяч просмотров ты вышел! Очень рад за тебя!))
@UlbiTV
Жыл бұрын
Олды на месте, помним, любим!
Вы просто красавчик,снимаю перед Вами шляпу.Такую тему так просто объяснить.
Спасибо, все доходчиво, местами даже ясно как это можно использовать в жизни)
Благодарю!!! все законспектировал и прорешал, замечательно.
Вот это точно надо разобрать как можно внимательней:)) спасибо за инфу, прошлое видео отложил на полку, пока не дорос, а вот это прям нужное
@UlbiTV
3 жыл бұрын
Спасибо!) Надеюсь было полезно!
@ipa_stor
3 жыл бұрын
@@UlbiTV еще не до конца разобрал, но точно полезно:)))
наверное это совершенно субъективно,но то, как вы объясняете лично мне совершенно гармонично ложится на подкорку. лайк + подписота. теперь осталось только пересмотреть все ролики и отработать каждый на практике.
@UlbiTV
2 жыл бұрын
Объясняю как для себя! Спасибо, успешного освоения материалов!
Шикарнейший урок!!!!!!!!!!!!!!!!!
@UlbiTV
3 жыл бұрын
Спасибо вам!
Спасибо, отлично) Было бы ещё интересно сферы применения set map
Оо вот это годнота подъехала. Лойс за курс по алгоритмам на javascript.
@UlbiTV
3 жыл бұрын
Спасибо дружище, рад стараться!)
Канал радует, не зря подписался, много полезных вещей, спасибо.
@UlbiTV
3 жыл бұрын
Спасибо) рад что полезно!
Спасибо за труды, подача идеальная!)
Спасибо большое, замечательный курс 🚀🚀🚀
@UlbiTV
3 жыл бұрын
Спасибо, Ибрагим!)
Спасибо большое. Всё быстро, просто и понятно.
Спасибо шикарно!! Алгоритмы и структуры данных на JS!!
Самая простая реализация быстрой сортировки из всех, что я видел, кайф
Большое спасибо. Крутая работа!
Просто лучший! Спасибо за дельную информацию!
@UlbiTV
3 жыл бұрын
Спасибо дружище)
13:22 if(array[j] < array[indexMin]) так как ты сравниваешь одинаковые значения)
Отличное видео! Спасибо, за внятную подачу =)
Сколько же труда... как кажется... спасибо 👍️
спасибо! первое понятное объяснение! дай бог тебе здоровья
Очень объемно, но познавательно, спасибо
Спасибо большое! Очень быстро и доходчиво
лайк, то что всегда хотел посмотреть, и еще js, это супер приз просто, спасибо огромное за видео
@UlbiTV
3 жыл бұрын
Благодарю!)
благодарю, как раз то что искал, подписка с первого видоса - продолжай!
Спасибо автору! Суперполезный контент !
@UlbiTV
3 жыл бұрын
Спасибо большое!)
Лайк, подписка, колокол. Для меня джуна-самоучки такие курсы крайне полезны. На канале нашел весь стек, который нужно подучить в нагрузку к документации react, redux(toolkit, saga), next. Большое спасибо.
@UlbiTV
3 жыл бұрын
Спасибо друг!) Приятного просмотра!
спасибо тебе с array[i] я конечно посидел с карандашиком сверяя, но так даже лучше запоминается
Молодец Тимур! Отличный контент! Спасибо тебе огромное!
Супер видео ) Пока что писал на C C++ и C# скоро нужно будет переходить на JS , как я понял язык довольно не сложен в освоении )