Алгоритмы и структуры данных ПОЛНЫЙ КУРС на JAVASCRIPT

Поділитися
Вставка
  • Опубліковано 14 гру 2024

КОМЕНТАРІ • 825

  • @UlbiTV
    @UlbiTV  4 роки тому +198

    Друзья, таймкоды в описании!) Приятного просмотра! Исходный код урока в описании!

    • @UlbiTV
      @UlbiTV  4 роки тому +8

      @Арслан Ахметжанов спасибо друг, по большей части структуру брал из книги «грокаем алгоритмы»!)

    • @topsecret9174
      @topsecret9174 3 роки тому +13

      Йипать капать, дядь, не иначе как ты апгрейднутаяя версия реинкарнации Zorax'a ☺ Не обессудь, я не хотел тебя оскорбить, т.к. многие люди не любят когда их сравнивают с кем либо, пусть даже и в положительном контексте. Просто очень похожая манера подачи и изложения материала, но гораздо более продвинутого и с практическим уклоном. Очень круто объясняешь, четко, последовательно, структурированно да еще и доступным языком. Всего хорошего тебе, спасибо, что делишься своими знаниями.

    • @АндрейБочарников-х5ъ
      @АндрейБочарников-х5ъ 3 роки тому +1

      @@UlbiTV реализацию алгоритма Дейкстры ты обьяснил понятнее, хотя вроде бы код такой же) спасибо)

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

      Спасибо!

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

      Круто 👍. Спасибо.

  • @devorer77
    @devorer77 4 роки тому +184

    Иди обниму! Я ровно в эту секунду сижу в Гугле и ищу норм курс по алгоритмам! Это мистика какая-то!

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

      Да я просто чувствую, что вам нужно)) Обнял!)

    • @devorer77
      @devorer77 4 роки тому +24

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

    • @UlbiTV
      @UlbiTV  4 роки тому +14

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

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

      @@UlbiTV У вас была задача где вы с графами работали и если да, то что за задача.

    • @НиколайФарисеи-ч7б
      @НиколайФарисеи-ч7б 2 роки тому +2

      @@UlbiTV не то слово) смотрю и вижу фигу) ну что то воспринимается, но как это писать и с чего начинать это треш пока

  • @eanewmahariel2279
    @eanewmahariel2279 4 роки тому +61

    ахах, хитрый) в сортировке выбором смотрю на эту array[i] во вложенном цикле по j, потом ты запускаешь в ноде - и бах! всё работает :D я сижу такой в непонятках вообще. а ты там в тихую вырезал момент, где исправляешь i на j :D лучше проговаривай явно такие моменты, чтобы люди не путались.
    а за видео спасибо. чувак, у тебя неоправданно мало подписчиков. но, думаю, долго это не продлится. продолжай!

    • @UlbiTV
      @UlbiTV  4 роки тому +18

      Ааххахахахах))) Очень внимательный) Да, обычно я такие моменты обговариваю, тут как-то упустил) Зато убедился, что есть внимательные подписчики!

    • @Johnhnhn2012
      @Johnhnhn2012 3 роки тому +14

      полчаса сидел и недоумевал, почему это работает и как такое возможно, думал я совсем тупой и не понимаю почему arr[i], вместо arr[j]. Зашел в комменты чисто, чтобы проверить, что кто-то возмутился тоже))

    • @ПавелГарский
      @ПавелГарский 3 роки тому +5

      Тоже зашел в комменты найти что же я упустил)

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

      @@UlbiTV Все мы люди. Любой может сделать опечатку. А вот втихую исправлять такие опечатки, мягко говоря, нехорошо. Но ты и сам, думаю, это понимаешь) За видос лайк улетел - контент годный 👍🏻

    • @МирославМилаев
      @МирославМилаев 3 роки тому +1

      Реально! Я себе чуть когнитивный диссонанс не заработал, хорошо в комментарии посмотрел что не один я заметил... А как же не заметить, сам же в голове компилируешь каждую задачу и как тут такое пропустить...

  • @servus7314
    @servus7314 2 роки тому +29

    Огромное спасибо за видео. В видео на 14:25 в строке 8 опечатка - мы перебираем массив array[j] (внутренний цикл), а не array[i]

    • @АринаГлаванарь
      @АринаГлаванарь Рік тому +9

      кайф, 2 дня пытался понять почему не работает. Зачем исправлять и потом делать склейку уже с правильным вариантом? Начинающие потом сидят и ломают голову.

    • @Goddamn_Right
      @Goddamn_Right Рік тому +3

      Тоже обратил внимание на эту магию вне Хогвартса. Несколько минут пытался разобраться, почему оно вообще работает, как обычно, ответ нашелся в комментах))

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

      14:34 склейка

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

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

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

      27:02 тоже ошибка ,стек переполнится

  • @Zexa91x0
    @Zexa91x0 3 роки тому +28

    Видео конечно Огонь, Спасибо!
    1) Считаю что на 13:31 допущена ошибка в строчке 8 , которую хорошо показывает дебаг. строчка 8 должна быть вот такая чтобы код чтото сортировал if (array[i] > array[j]) {....
    в вашем примере здесь происходит сравнение одной и той же ячейки массива в каждой интерации , и результат условия всегда False.
    2) Считаю что на 16:19 допущена ошибка на строчке 6 , , которую хорошо показывает дебаг. во вложенном цикле должно быть j=i а не j=0
    поправьте меня если я ошибся

    • @letonik72
      @letonik72 3 роки тому +9

      Тоже ее сразу заметил и чуть не офигел, когда он получил отсортированный массив.. Начал переписывать код, но потом все же заметил как он незаметно в вырезанном моменте видео меняет i на j.

    • @smittychannel3252
      @smittychannel3252 2 роки тому +2

      я не мог понять .... полностью повторил код и нет сортировки(пока вдуплил аж вспотел. "Ну на видео сортирует ,ошибок нет))".Мозг говорит мы сравниваем две одинаковые переменные .....(Я) как так? на видео все ок ...Отстань))

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

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

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

      По поводу второго пункта: должно быть j < array.length - i, т.к. самый большой элемент мы переносим в конец массива, и там сортировать уже смысла нет. И тогда получается намного эффективнее, хоть и все еще очень медленно. Сортировка выбором эффективнее, т.к. не меняет элементы местами при каждом случае.

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

      @@mighty_osaker тоже увидел (на bubble_sort(arra)).. когда решил на Python повторить, циклы, т.к. резанула конструкция j=0; l

  • @АндрейБлок-х2ъ
    @АндрейБлок-х2ъ Рік тому +158

    Трудно было сдержать улыбку, когда Тимур искал кротчайший путь до точки "G" 😁

    • @den2811
      @den2811 Рік тому +1

      😂😂😂

    • @den2811
      @den2811 Рік тому +1

      нашел - это главное 😂

    • @user-ye3vi2ss4i
      @user-ye3vi2ss4i Рік тому +1

      Путь в точку G за 5 у.е.

    • @dexterholland4430
      @dexterholland4430 Рік тому +2

      Первое, о чем я подумал, когда услышал, это то, что 100% есть чел, который уже запилил этот коммент 🤣🤣

    • @Antonym-b5o
      @Antonym-b5o 10 місяців тому +2

      автор не понял вашего смеха, поэтому и знает алгоритмы

  • @InziraMindFlow
    @InziraMindFlow 11 днів тому

    Начала с книги «гокаем алгоритмы», а тут еще и наглядное пособие с объяснениями! Искренняя благодарность 🙏☀️

  • @fealllback5539
    @fealllback5539 3 роки тому +72

    Как по книге "Грокаем алгоритмы". Только там на питоне написано. Спасибо за курс!

    • @UlbiTV
      @UlbiTV  3 роки тому +16

      Да, ее за основу брал) спсасибо!

    • @shsh01212
      @shsh01212 3 роки тому +3

      на гитхабе все примеры лежат на любом языке, в т.ч и на js

    • @alexandrcorbin
      @alexandrcorbin 3 роки тому +3

      Все что есть в этом ролике - ищется в гугле ровно за 2 минуты.

    • @babush6
      @babush6 3 роки тому +13

      @@alexandrcorbin и чо ?

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

      Я предпочитаю смотреть, поэтому автору ролика большое спасибо.

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

    Идея, реализация + отличная подача = это то, о чем мы так давно мечтали

  • @denislopatin3100
    @denislopatin3100 3 роки тому +18

    Очень интересно, про опечатку в selection sort уже написали, я бы хотел добавить замечание по bubble sort подходу, так как там сложность такая же как и при selection sort методе. При каждом проходе первого цикла нет смысла проходить второй цикл полностью, так как верхний элемент уже будет отсортированным. Если применить: j < array.length - i то сортировка проходит за 1378 итераций, а не 2704. Да, по сути как вы и писали это все равно O(n*n), но все же на практике разница в два раза.

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

      правильное замечание, молодец

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

      Перед тем как написать это замечание решил глянуть, не мог же я один это заметить... :) Еще момент , так же нет смысла крутить цикл до конца, если нет ни одного перемещения "пузырька". Для частично отсортированных массивов это имеет важное значение. Пузырьковая все же почти всегда быстрее чем обычным перебором, хоть и не значительно

  • @dexterholland4430
    @dexterholland4430 Рік тому +17

    Единственный канал, ролики которого я качаю и храню локально на случай, если отрубят ютуб) Тимур, искренне благодарю тебя за твои труды. Ты делаешь невероятно полезный контент, о чем свидетельствует многотысячное комьюнити вокруг тебя. Крепкого здоровья тебе. Живи вечно 🤝💪

    • @trueslav3999
      @trueslav3999 Рік тому +2

      Факт

    • @smartaeroflot
      @smartaeroflot 9 місяців тому

      Если отрубят ютуб это будет означать что ничего из подобной информации тебе уже не пригодиться, лучше тогда уж сохраняй, как развести огонь имея две палки ))))

    • @НикитаБест-д4н
      @НикитаБест-д4н 4 місяці тому

      актуально ведь ​@@smartaeroflot

    • @АрнРоанн
      @АрнРоанн Місяць тому +1

      Очень серьёзное замечание, тоже уже думаю начать это делать))

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

    Спасибо, так хорошо, просто, быстро и лаконично мне ещё не объясняли! Это очень полезное видео, лучшее, что видел. Огромная благодарность автору за то, что делитесь своими знаниями! Thumb up!

    • @UlbiTV
      @UlbiTV  3 роки тому +5

      Благодарю за поддержку!

  • @LxndrKrchvtsv
    @LxndrKrchvtsv 3 роки тому +66

    Три дня потратил на это видео, оказалось очень полезным! Теперь грокать алгоритмы по книге надеюсь будет легче.)) Спасибо!

    • @UlbiTV
      @UlbiTV  3 роки тому +14

      Спасибо друг!) Рад что полезно!)

    • @ДанилДмитриев-я5м
      @ДанилДмитриев-я5м Рік тому

      как успехи

    • @adam-front
      @adam-front Рік тому

      ​@@ДанилДмитриев-я5м уволили его

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

      @@adam-front почему уволили?

    • @NelNik
      @NelNik 11 місяців тому

      ​@@runar9118грокнул сервер на работе

  • @Werma2006
    @Werma2006 3 роки тому +45

    Спасибо! особенно за "путь из точки А в точку G" и сумму элементов дерева "69" ;D

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

      хах, и поиск кратчайшего пути к точки G :D

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

      К тому же к точке G мы получаем доступ всего за 5 условных единиц, что я считаю очень выгодно 😁

  • @user-pd9no5ye5g
    @user-pd9no5ye5g 3 роки тому +2

    смотреть в шапке))) на некоторых моментах казалось что голова просто взорвется, реально интересно, для того чтоб код "как-то работал"
    это не особо нужно и на таких вещах не акцентируют внимание, чтоб не видеть слез студентов. Для понимания и осознания очень полезное видео, видос в стиле "прокачать мозги". Очень понравилось, спасибо

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

      Спасибо дружище!) Алгоритмы больше для бекенда, на фронте редко, когда нужны какие то сложные махинации с данными)

  • @АртурХабибулин-ъ4д

    Спасибо огромное!!! Начал изучать алгоритмы и не знаю с чего подступиться, решил посмотреть предварительно данную тему здесь, и как всегда, не ошибся! Всё строго по делу, без воды, чётко поставленная речь, отличная подача материала. Начал изучать книгу по алгоритмам, отталкиваясь от данного урока лучше усвоение проходит)

  • @Mintus775
    @Mintus775 2 роки тому +2

    Как давно я искал объяснение самых популярных алгоритмов для маленьких и отсталых, как я. Спасибо !

  • @svyatoslavkorolyov2708
    @svyatoslavkorolyov2708 2 роки тому +8

    Чувак, господи, ты мне буквально заменяешь айтишный факультет в вузе) Жалею, что не поступил на программиста, так что хочу своими силами наверстать недостающие знания. Спасибо!

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

      Советую смотреть записи фпми мфти или CT lectures, информации больше и ее качество значительно лучше

    • @ДанилДмитриев-я5м
      @ДанилДмитриев-я5м 4 місяці тому

      как успехи

  • @Max-kr4ie
    @Max-kr4ie 3 роки тому +9

    Привет. Думал будет просто про алгоритмы как у всех, как первая половина видео, а тут столько всего. Великая работа. Как минимум ты не просто озвучил книгу, но в хорошей форме донес и объяснил нюансы. пока еще нахожусь в состоянии просмотра.

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

      Привет) Старался вместить как можно больше в один ролик) спасибо!

  • @patrickbrougham6577
    @patrickbrougham6577 Рік тому +2

    на 5:28 в таблице для линейного поиска есть неточность: для 1 000 000 (1млн) элементов время будет ~ 16 минут, а 11 дней - это для 1 000 000 000 (1млрд)
    для бинарного поиска также: для 1 млн время ~ 20 мс

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

      откуда 16 минут? у меня браузер отработал за 5 мс. Это ж через цикл фор?

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

      @@AlexKireev так там в начале делается допущение «если 1 операция по времени выполняется за 1 мс, то…»
      Это просто условное время для наглядности понимания возрастания сложности алгоритма, тут нет привязки к реальному времени.

  • @rasfront
    @rasfront 2 роки тому +2

    Парочка дополнений)) В случае с recursiveBinarySearch можно по умолчанию параметры сделать start = 0, end = array.length. Тогда можно спокойно вызывать функцию как recursiveBinarySearch(array, 10). Так же не учтен базовый случай if (start > end) return -1;. Иначе при передаче несуществующего в массиве элемента начнется бесконечная рекурсия. А так спасибо за классный контент. Мужик, ты крут))

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

    я долго думал на счет восьмой строки на 14:30, оказался косячок у тебя, монтируй сразу нормально. Спасибо за материал

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

    Спасибо, очень понравилось, что в одном видео все основные структуры и алгоритмы представлены + на JS.
    Отлично для обзора и повторения.
    Но как новичку сами алгоритмы (код) сложнова-то воспринимаются. Хорошо бы еще каждый разобрать подробнее на примере более простым языком, возможно начать с более простого примера и подвести к решению.

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

      грокаем алгоритмы, там код на python, правда версия 2, ну всё же, проще

  • @anilbanil2
    @anilbanil2 8 місяців тому

    Спасибо огромное за твой труд! Невозможно объяснить словами, насколько полезны твои видео. Готовлюсь к собеседованиям, и в одном месте повторить всю базу по алгоритмам с понятным объяснением, так еще и на js... ты лучший и точка))

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

    наверное это совершенно субъективно,но то, как вы объясняете лично мне совершенно гармонично ложится на подкорку. лайк + подписота. теперь осталось только пересмотреть все ролики и отработать каждый на практике.

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

      Объясняю как для себя! Спасибо, успешного освоения материалов!

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

    Оптимизация пузырька
    1) отнимаем на каждом внутреннем проходе i-ый элемент...тогда кол-во итераций как в методе вставки
    2) добавляем флаг => проходов становиться еще меньше, т.к. в процессе сортировки вы уже можете поставить правильно элементы
    3) флаг еще нужен если к вам пришел отсортированный массив
    сompare и swap доп-ые функции
    const bubbleSort = (input, compare = getCompare) => {
    const len = input.length;
    for (let i = 0; i < len - 1; i++) {
    let isSorted = true;
    for (let j = 0; j < len - 1 - i; j++) {
    countBubbleSort++;
    if (compare(input[j], input[j + 1]) === Compare.BIGGER_THAN) {
    isSorted = false;
    swap(input, j, j + 1);
    }
    }
    if (isSorted) break;
    }
    return input;

  • @vasylms2459
    @vasylms2459 3 роки тому +15

    13:22 if(array[j] < array[indexMin]) так как ты сравниваешь одинаковые значения)

  • @zingan.anatolii
    @zingan.anatolii 3 роки тому +2

    Доброго дня. Всё лаконично и по делу!
    1 момент, так оно тоже может сработать, но
    по моему, в recursiveBinarySearch нужно подфиксать:
    return recursiveBinarySearch(array, item, 0, middle - 1 ) ---> return recursiveBinarySearch(array, item, start, middle - 1 )

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

      Привет!) Спасибо за замечание!) Надо будет посмотреть

  • @Rymblnec1
    @Rymblnec1 Рік тому +6

    Тимур, в очередной раз хочу поблагодарить за твой труд!
    Вначале видео я слышал древний хинди, через пару-тройку итераций я уже начал слышать знакомые слова)) Еще итераций 10-15 и мы будем говорить на одном языке!

  • @МаксимАртемьев-з2д
    @МаксимАртемьев-з2д 3 роки тому +23

    Шикарнейший урок!!!!!!!!!!!!!!!!!

    • @UlbiTV
      @UlbiTV  3 роки тому +5

      Спасибо вам!

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

    классный набор!
    мини импрувментсы:
    - для свапа 2ух значений можно написать в 1 стрку вместо 3x: [a, b] = [b, a]
    - для бесконечно большого числа можно использовать: Infinity
    - при рекурсивном обходе дерева редюс смотрится лучше, но нужно потестить на практике

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

      Спасибо!) От вас как всегда очень полезные замечания!)

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

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

    • @ВасяПупкин-н9д9с
      @ВасяПупкин-н9д9с 3 роки тому +1

      а зачем вообще на фронте работать с "большими" данными? это же задача бэка

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

      @@ВасяПупкин-н9д9с Ну есть у тебя бекенд очень старый с кучей легаси кода, говорят тебе нам нужно новый дизайн и теперь вы делете фронт на реакте, апи переписывать нельзя с беканда как прилетает так прилетает все осталные преобразования делаете на фронтенде. Потому я написал +- большие. Это тот момент, где выбор инструмента уже решает производительность приложения

    • @ВасяПупкин-н9д9с
      @ВасяПупкин-н9д9с 3 роки тому +1

      @@SuperMeatB0y сочуствую, хотя это реальный идиотизм ворочать, во фронте большими объемами данных, проще реально бэк переделать

  • @TpyHaGuBaTop
    @TpyHaGuBaTop 8 місяців тому

    Самая простая реализация быстрой сортировки из всех, что я видел, кайф

  • @s9219871110
    @s9219871110 3 роки тому +3

    Продолжаю образовываться с Тимуром, уже почти 6 месяцев, и все еще считаю, что это лучший обучающий контент!!!Лучи добра!

  • @КарэнАкопьян
    @КарэнАкопьян Рік тому

    Как раз готовлюсь к собеседованиям, и тут нашел твой ролик, где все базовые алгоритмы собраны в одном месте! Просто лучший

  • @nika31169
    @nika31169 8 місяців тому +1

    в BubbleSort Алгоритме в Си подобных языках, функция будет выходить за пределы массива
    Вот верный вариант
    func swap(a, b *int){
    *a, *b = *b, *a
    }
    func sortArray(nums []int) []int {
    n := len(nums)
    for i := 0; i < n-1; i++ {
    for j := 0; j < n-i-1; j++ {
    if nums[j] > nums[j+1] {
    swap(&nums[j], &nums[j+1])
    }
    }
    }
    return nums
    }

  • @ЭльнараГайнанова-ф3к

    Никак не могла понять, как писать код для алгоритма Дейкстры. 3 раза пересмотрела эту часть. Спасибо, спасибо за такие видео! Просто лучший в своем деле 👍

  • @mirudistok1915
    @mirudistok1915 4 роки тому +16

    Крутой подгон. Спасибо большое. И да, поздравляю с 1к. )

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

      еее, спасибо большое друг!)

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

      @@UlbiTV ух ты, уже 1к, вроде только вчера была сотня или две. Поздравляем 🥳🎉🎊

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

      @@TheProfessionalGambler спааааассиииииибооооо!!!!!)))))) лучшие!!!

  • @artemlashmanov1682
    @artemlashmanov1682 9 місяців тому

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

  • @lifehd8523
    @lifehd8523 2 роки тому +2

    Парнишка гений. Так точно, доступно и просто , не каждый препод сможет подать материал. Лайк, подписка!

  • @igorb5774
    @igorb5774 2 роки тому +5

    В данном видео до алгоритма Дейкстры (33:04) мне все понравилось. Полезно что с практическими примерами. Спасибо.
    До этого читал про этот же алгоритм Дейкстры в книге "Грокаем алгоритмы..." и там пояснялось намного понятнее чем здесь: что мы от начальной точки, проставляем в таблицу дистанцию до тех точек, с которыми есть связи, и идем к той точке, к КОТОРОЙ ПУТЬ НАИМЕНЬШИЙ (в данном случае - точка B), а не как здесь в видео говорится что "на 3м этапе рассматриваем вершины из которых можем попасть из точек B и С" - как будто мы идем к ним одновременно. Потом в самой имплементации автор делает все как надо, но вот начальное описание было очень запутанное.
    К чему я это? если тоже не поняли сначала, рекомендую почитать об этом в книге.

  • @ДимаГоликов-с6ш
    @ДимаГоликов-с6ш 6 місяців тому

    5:27 1000000 элементов за линейное время выполнятся 17 мин, а за логарифмическое за 20 мс. Тут опечатался чутка: данные для миллиарда элементов у тебя приведены (хотя уже 2 ^ 30 = 1073741824). За ролик огромное спасибо!

  • @DainSPb
    @DainSPb 2 роки тому +2

    Поплыл уже где-то на середине) Но ощущения приятные - как после качалки, только не в мышцах, а в мозгах.
    Позже пересмотрю ещё не раз

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

    Оххх ништяк какой! Несколько дней без ютьюба и тут 2 такие бомбы, алгоритмы да еще и бд! Бро, определил всё воскресенье мое!)

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

      А я думаю, куда Коля пропал!))

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

      @@UlbiTV да работы много было и дел всяких, на обучение не было времени, сейчас вот выходные будут мега полезные из за твоих видео в про алгоритмы и БД))

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

      @@kolyabokov88 отпишись потом, понравилось или нет))

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

      @@UlbiTV Я основательно завтра подойдут к этому, как практику прям буду делать, я давно уже хотел разобрать тему алгоритмов, на собесах бывает спрашивают и это прям плюс, да и в целом, полезно. Уверен будет понятно, отпишусь, бро!

  • @saskirakosyan5268
    @saskirakosyan5268 3 роки тому +6

    Хороший канал, не только среди русскоязычных ... Big like!

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

      Спасибо друг!)

  • @phonkabuser3985
    @phonkabuser3985 6 місяців тому

    нихуя себе, у меня алгоритмы и структуры данных 2 года в универе шли, а ты за час ВСЁ рассказал, еще и на жаваскрипт ! какой молодец

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

    Шикарно, как всегда.
    Единственное на selectionSort 14-30 8 строка if(array[j] < array[indexMin])

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

      Спасибо!)

  • @Levelord92
    @Levelord92 3 роки тому +7

    Для того, чтоб поменять 2 элемента местами, не обязательно создавать временную переменную, можно это сделать через деструктуризацию:
    const arr = [2,1,3];;
    [arr[0], arr[1]] = [arr[1], arr[0]];

    • @Айнур-ъ1я
      @Айнур-ъ1я 9 місяців тому

      Проверил. По времени получается дольше где-то на 10 процентов при 20000 элементах

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

    Интересная функция кэширования с написанием cash (деньги), а не cache. Но это я так, на самом деле оч крутое видео, спасибо за него!

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

      Это наверно прикол, как и A to G и 69

  • @ШепелевЕвгений
    @ШепелевЕвгений Рік тому +1

    В сортировке выбором вложенный цикл - там должно быть j вместо i (примерно 14 минута) А так все супер! Спасибо за разбор алгоритмов на js! Так бы в вузе учили...

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

      Вот сидел ,пытался повторить час и не получилось ,и нашел свой комент давнишний про ошибку .Не пойму как тогда у автора видео все заработало?Наверно ответ уже был готов заранее .Да уж.

  • @ИванИвпнов-п6ь
    @ИванИвпнов-п6ь 3 роки тому +1

    уже 2 года во фронтенде, но ни когда таким полезными вещами не пользовался. Автор спасибо👍

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

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

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

      И вам спасибо!)

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

      Это точно) но как ни крути это все очень полезно

  • @unknown.6914
    @unknown.6914 8 місяців тому

    Спасибо Ульби за то, что так явно даешь почувствовать себя слабым программистом ))) Как бы сказали менеджеры, нашел мои точки роста.
    Ну ничего страшного, идем дальше учиться, step by step! Всем добра :)

    • @postyron1um
      @postyron1um 7 місяців тому

      что ты высрал

  • @user-ym7ir4ut8c
    @user-ym7ir4ut8c Рік тому +1

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

  • @gapragapr
    @gapragapr 11 місяців тому

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

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

    Спасибо! Наконец-то что-то понятно. Ещё бы "не вырезать / или делать" паузы, чтоб мозги успевали улавливать темп. Тот же, алгоритм Дейикстры - вообще иероглифы кода, и где мы используем end - тоже не понятно).

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

    Неделю назад пытался найти что нить на youtube по алгоритмам на JS с примерами кода. И тут такой подарок! Спасибо за видео!

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

      Спасибо!) Помогло?)

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

      @@UlbiTV Ща попробую решить задачку на codewars по графам. И проверим помогло или нет)

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

      @@alexlukas3227 удачи!)

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

    14:31 :
    line 8: if (array[i] < array[indexMin]) {
    14:32 :
    line 8: if (array[j] < array[indexMin]) {
    Я ещё думаю, как при таком условии получается такой результат, оказывается ты потом исправил код, но об этом ничего не сказал
    Ошибка незначительна но из-за неё получается совсем другой вывод:
    0, 3, 2, 5, 6, 8, 1, 9,
    4, 2, 1, 2, 9, 6, 4, 1,
    7, -1, -5, 23, 6, 2, 35, 6,
    3, 32
    вместо:
    -5, -1, 0, 1, 1, 1, 2, 2,
    2, 2, 3, 3, 4, 4, 5, 6,
    6, 6, 6, 7, 8, 9, 9, 23,
    32, 35

  • @Sergei546
    @Sergei546 8 місяців тому

    ты просто герой. реально вкладываешься это видно. спасибо за труд. здоровья бро

  • @konglomora3230
    @konglomora3230 3 роки тому +3

    Как всегда лайк, и длинннннннныыыыыый комментарий в поддержку автора. Бог преподавания и маэстро краткости, Тимур.

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

    Очень понравился материал. Объяснено доступно и на хороших примерах. Есть, конечно, опечатки, но и них другие написали, а вот что хотелось бы, так это упоминания о балансировке двоичного дерева. Без нее дерево вполне вырождается в связный список с потерей всяких преимуществ. Также, думаю, достойным было бы упоминание, в контексте quickSort, так называемые in place вариант алгоритма без выделения дополнительной памяти. Но, вне всякий сомнений, видео обязательно к просмотру! Спасибо автору!

  • @ДимаМельников-ы6к
    @ДимаМельников-ы6к 2 роки тому +1

    27:18 - Бинарный поиск через рекурсию, забыл прописать базовый случай (если элемента нету, то функция будет выполняться бесконечно), нужно добавить if (start > end) return null

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

    Все здорово. Как будто по быстрому перечитал грокаем алгоритмы, но с примерами на js.

  • @ОлегМихайленко-б2у
    @ОлегМихайленко-б2у 3 роки тому +2

    спасибо тебе
    с array[i] я конечно посидел с карандашиком сверяя, но так даже лучше запоминается

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

    Видео шикарное. Но у меня возник ступор во время просмотра. Перемотал раз 5, не мог понять почему сравнивали одинаковое значение внутри цикла где if (array[i] < array [indexMin ])....13:18..... Но потом понял что то была ошибка с индексом. А то я уже расстроился, что даже в таком простом не могу разобраться:))) Очень понравилось видео. Спасибо большое!!!

  • @fear0592
    @fear0592 3 роки тому +14

    Очень круто! Хотелось бы так же увидеть разбор более сложных алгоритмов.

  • @Pervoproxodets
    @Pervoproxodets Рік тому +1

    Спасибо) послезавтра на собес. За день должен это понять

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

    Спасибо за крутые уроки! Все очень полезно и без воды!
    Мне кажется, алгоритм Дейкстры можно реализовать эффективнее и короче. У меня получилось так:
    type GraphNode = {
    [name: string]: number
    }
    type Graph = {
    [name: string]: GraphNode
    }
    const graph: Graph = {}
    graph.a = {b: 2, c: 1}
    graph.b = {f: 7}
    graph.c = {d: 5, e: 2}
    graph.d = {f: 2}
    graph.e = {f: 1}
    graph.f = {g: 1}
    graph.g = {}
    function shortPath(graph: Graph, start: string, end: string): number {
    let map = { [start]: 0 }
    let queue = [start]
    let current;

    while (queue.length > 0) {
    current = queue.shift()!
    for(let child in graph[current]) {
    const distance = map[current] + graph[current][child]
    map[child] = map[child] ? Math.min(map[child], distance) : distance
    queue.push(child)
    }
    }
    return map[end]
    }
    console.log('shortPath', shortPath(graph, 'a', 'g'));

  • @АртемПечерский-с8ф
    @АртемПечерский-с8ф 3 роки тому +1

    Круть! Спасибо.
    Можно еще этот кусок в select and bubble SORT, заменить другим синтаксисом в одну строку:
    ``let tmp = array[j];
    array[j] = array[j + 1];
    array[j + 1] = tmp;
    ```
    ====> [ array[j + 1] ] = [ array[j] ];

    • @МихаилШвыдкой-й5э
      @МихаилШвыдкой-й5э 3 роки тому +1

      Нет, значения должны меняться местами. но можно как в Википедии выделить процедуру Swap.

    • @АртемПечерский-с8ф
      @АртемПечерский-с8ф 2 роки тому

      @@МихаилШвыдкой-й5э сорь, да, вот так: ====> [ array[j + 1], array[j] ] = [ array[j] , array[j+1]];

  • @СергейПушкарев-ь6п
    @СергейПушкарев-ь6п 2 роки тому +3

    Класс, то что нужно, четко, без воды. Обожаю твои видосы

  • @TatianaErsinBoyraz
    @TatianaErsinBoyraz 6 місяців тому

    Спасибо огромное! Хоть стало понятно как эти алгритмы,про которые я читаю в книге выглядят в коде.🤗

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

    Брооо, приветствую! Был с тобой с первых видео, часто смотрел ролики и предрекал стони тысяч просмотров)
    Сейчас захожу на ютьюб редко, но вижу что на сотни тысяч просмотров ты вышел!
    Очень рад за тебя!))

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

      Олды на месте, помним, любим!

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

    Спасибо за подробное объяснение базовых алгоритмов и структур данных, а так же их примеров на javascript!
    Очень помогло для подготовки к собеседованию (Оценка сложности, Бинарный поиск, Сортировка выбором, Сортировка пузырьком, Графы, Стек, Массив, Связный список, Бинарное дерево)

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

    14:32 8я строка) думал до этого момента я туплю, оказалось - опечатка, но автор поправил незаметно) спасибо за видос, оч полезно)

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

      Случайно вышло(

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

    Самое доходчивое объяснение алгоритмов!

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

      Старался, спасибо!

  • @mikhailnikolaev9927
    @mikhailnikolaev9927 8 місяців тому

    Спасибо.
    Очень нужно на собесах.
    Совсем не нужно на работе.

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

    Бро, ты как всегда радуешь) поддержу комментарием, спасибо за контент!

  • @webdew-fe
    @webdew-fe Рік тому

    если в bubbleSort() во вложенном цикле итеррироватьcя j < array.length - i (на каждой итеррации максимальное значение всплывает в конец, поэтому можно считать эту часть отсортированной); то получим ~ 1/2 n*n

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

    31:45 нам нужно проверить, есть ли путь из точки А в точку G
    34:26 на следующем этапе мы достигаем точки G
    оу, маааай! чисто программерский сэкс

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

      😂😂😂👍👍

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

    Спасибо за урок. Один из немногих, к которому, как и сказал автор, полезно будет возвращаться.

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

    14:35 магическим образом ошибка в коде исправилась, круто :)

  • @Вебразработка-м2г
    @Вебразработка-м2г 3 роки тому +1

    Автор лучший человек в мире для меня, помогает понимать такие вещи что очень страшные но если долго стараться то становиться не страшно

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

    Ты крутой, мне очень нравится подача материала! Редакс прямо усвоился хорошенько, просто и без воды)

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

      Спасибо друг) стараюсь, очень рад, что мои гайды помогают! Успехов!

  • @ЕкатеринаКан-т7т
    @ЕкатеринаКан-т7т 7 місяців тому

    спасибо! первое понятное объяснение! дай бог тебе здоровья

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

    Все есть на этом канале. И алгоритмы и фреймворки и передовые best practice. Спасибо Тимур!

  • @МихаилБелоусов-р6й
    @МихаилБелоусов-р6й 3 роки тому +1

    Лайк, подписка, колокол. Для меня джуна-самоучки такие курсы крайне полезны. На канале нашел весь стек, который нужно подучить в нагрузку к документации react, redux(toolkit, saga), next. Большое спасибо.

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

      Спасибо друг!) Приятного просмотра!

  • @АртемМашевский
    @АртемМашевский 3 роки тому +4

    По книге "Глотаем алгоритмы", спасибо объяснил понятно.

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

      Да, часть из книги!) Спасибо!

    • @АртемМашевский
      @АртемМашевский 3 роки тому +3

      Сейчас, как раз, эту книгу читаю.
      Ничего не понятно, но очень интересно 😂😂😂

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

      тогда уж ' Глотаем алголитмы'

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

      только "ГРОкаем алгоритмы" не надо их глотать =)

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

    Спасибо! Пойду использовать cash-функцию для поиска кратчайшего пути в точку g

  • @eduardkosyan1937
    @eduardkosyan1937 6 місяців тому

    5:24 тут у вас опечатка. 1мс * 1000000 = 16 мин, не 11 дней. Спасибо за урок!

  • @a-sher
    @a-sher 3 роки тому +2

    Вообще крутой урок. Подписка и лайк!

  • @ОлександрЯківець-ь2и

    Понятное описание, всё доступно, взял Ваш файл за альманах!)

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

    Тимур спасибо тебе за труды, очень помогаешь разобраться в сложных вещах простым языком
    На 34:26 :"на следующем этапе мы достигаем точки G", напарник за соседним столом: "А это точно про алгоритмы?! О_о"

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

    Ура, кротчайший путь до точки G найден! 😛

  • @ЕвгенийКавецкий-ц6м

    Спасибище!!!! Наконец то доступным языком. Лайк и подписка сразу

  • @iceaye5730
    @iceaye5730 7 місяців тому

    Отличные объяснения, доступно, понятно. Спасибо!

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

    36:33 "..добавляем бесконечно большое число" -->> Infinity

  • @ВячеславАрхипов-я1в

    Твои видео супер, таких людей как ты на Ютубе немного

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

      Cпасибо друг, не зря стараюсь значит!)

  • @Алексей-т2х8й
    @Алексей-т2х8й 3 роки тому +1

    спасибо большое за такой концентрированный материал, без воды все по делу, все понятно, примеры, просто огонь!

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

      Спасибо дружище!) Старался для вас!

  • @error-md1sh
    @error-md1sh 4 роки тому +2

    Спасибо за видео. Очень нравится кодовое пояснение на js , сразу легче информация воспринимается.

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

      Спасибо!) рад что полезно!

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

    Оо вот это годнота подъехала. Лойс за курс по алгоритмам на javascript.

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

      Спасибо дружище, рад стараться!)

  • @maximprosv
    @maximprosv 3 роки тому +6

    Просто шикарная подача материала, большое спасибо!