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



В этом ролике мы кратко пройдемся по самым популярным алгоритмам, таким как поиск, сортировка, обходы графа, …

41 Comments

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

  2. 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

  3. хотел уточнить: на 42:51 (при рекурсивном обходе дерева), когда задается условие выхода из рекурсии можно ведь задать if (!el.c){ return sum} и все будет нормально работать? не очень понимаю зачем делать return node.v.
    Также при итеративном обходе дерева функция будет работать если мы будем использовать структуру данных очередь, а не стэк ( на 44:19) можно было написать const node = stack.shift(), также все считает, просто обрабатывает не в том порядке.

  4. 14:30 на данной минуте у автора в 8 строчке кода написано if (array[i] ….. с таким значением массив не сортировался, потом уже исправил на array[j], но не упомянул что заменил.

  5. автор не может определиться: ставить точки с запятой или не ставить xD =))

    ох уж этот javascript. разбаловал программистов!

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

  7. решение задачи алгоритмом Дейкстры, это какой уровень сложности задачи по меркам CodeWars?

  8. Супер видео ) Пока что писал на C C++ и C# скоро нужно будет переходить на JS , как я понял язык довольно не сложен в освоении )

  9. 59:15 – с объектами можно так-же сделать – через скобочную нотацию. Тогда в чем реальное отличие между этими структурами данных?)

    const obj = new Object();

    const objKey = { a: 3 };

    obj[objKey] = 2;

    console.log(obj[objKey]); //2

    obj[true] = "true";

    console.log(obj[true]);//"true"

  10. 14.30 минуте автор с помощью монтажа исправил ошибку и без комментариев, будте внимательней если у вас, что то идет не так, как надо

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

  12. Благодарю! Лайк на месте. Урок на высоте!!! Великолепен, нагляден, понятен.

  13. Спасибо, отлично)
    Было бы ещё интересно сферы применения set map

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

  15. Там у вас ошибка в слайде 5:50, где линейный алгоритм, если
    100 элементов обрабатывается за 100мс, а 10к – за 10 сек, то
    1000к эл – за 1000 с, это 16мин 40с
    Времени в 11 дней соответствует обработка 1млрд элементов(11дней+почти 14часов)

    Это тест на внимательность или ошибка?

  16. Каждый раз, когда смотрю твои видео – открываются новые горизонты. И приходится переделывать свое приложение, чтобы соответствовать )))

  17. прогоняю алгоритмы ролика на Python… и что то функцию кэширования не удалось воспроизвести the same….я так и не понял можно ли сделать замыкание т.к. сделал Автор … мой вариант под определение Python-Замыкания…
    def cash_def(cash):

    def factor_cash(n):

    if bool(cash.get(n)):

    print('value <n:',n,'> take aus cash')

    return cash[n]

    else:

    nc = n

    rezult = 1

    while n > 1:

    rezult *= n

    n -= 1

    cash[nc] = rezult

    print('value <n:', nc, '> solved bei def:')

    return rezult

    return factor_cash

    solve_cash = cash_def({})

    print(solve_cash(5))

    print(solve_cash(4))

    print(solve_cash(3))

    print(solve_cash(5))

    print(solve_cash(4)) код рабочий, но Автор пользуется 2 независимыми функциями, а у меня получилось замыкание только через вложенную сделать… может кто подскажет из питонистов? это особенности Python или я не так воспроизвел?

  18. Спасибо за крутые уроки! Все очень полезно и без воды!
    Мне кажется, алгоритм Дейкстры можно реализовать эффективнее и короче. У меня получилось так:

    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'));

  19. Привет! Мин 10 – 15 ломал голову, почему ничего не работает алгоритме сортировки выбором. Только потом заметил, что у тем с начала во втором цикле в if array[i], а после склейки array[j]))

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

  21. 51:15 дорогая операция вставки в списке получилась. Лучше хранить ссылку на последний элемент, тогда добавление нового элемента в конец списка станет очень дешёвым

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

Leave a Reply

© 2023 53GB