Алгоритмы и структуры данных (С++), лекция №10

Поділитися
Вставка
  • Опубліковано 13 кві 2020
  • Практика: cs.mipt.ru/cpp_algo/
    План курса, код с ноутбука: github.com/tkhirianov/lection...
    Telegram-группа: t.me/tkhirianov_cpp_algo
    Спонсировать: / tkhirianov или www.paypal.me/tkhirianov или 63900240 9020000598 (карта СБ).

КОМЕНТАРІ • 31

  • @smir1634
    @smir1634 4 роки тому +13

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

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

    Thanks for your work and good luck with the next video !!

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

    Bolshoe spasibo Vam za prekrastnye lekcii! Oni mne ochen pomogaut.

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

    Благодарю за лекцию!

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

    Спасибо за урок

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

    Спаисбо дорогой Тимофей Фёдерович.

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

    Большое Вам спасибо!

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

    Спасибо большое!

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

    Озвучка экспоненциальной асимптотики божественна - "фшшшюх!!" ))) Сразу понятно стало, что многопоточность не канает :) Тимофей - препод от бога))

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

    Тимофей, приветствую! Поправочка (часто встречается в коде) : при итерации в цикле по элементам массива (или вообще контейнера) следует использовать тип size_t, а не int:
    for(size_t i=0; i

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

      Из-за опасности переполнения? Или есть ещё причины?

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

    крутой мужик!

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

    Про английский: при массовой замене 'copying left elements' получилось 'copying right elements'. Надо было использовать синоним: copying the remaining elements'.

  • @nicolascage4670
    @nicolascage4670 4 роки тому +19

    Два в степени N, бро!

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

    Cпасибо

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

    Хотелось увидеть вашу реализацию quick. Ну и на этом большое спасибо!

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

      тут смотрел? ua-cam.com/video/1cKvMZOJeeE/v-deo.html

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

      @@BrownAleksя уже сделал давно)

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

    Про Карацубу: математики это страшные люди. :) Жаль, я не любил математику и изобретал логикой. Когда у меня была задача умножать очень длинные числа, не влезающие в разрядность, я решил использовать нечто вроде BCD. При умножении двух чисел любой длинны N, будет не более 9 умножений длинного числа на простое одноразрядное число, не более N сдвигов и N сложений. Т.е. при умножении поразрядно (в столбик), один раз умножив на любую цифру, а их всего не более 9 (ноль просто выбрасываем, оно ничего не даёт), запоминаем полученное число, и когда оно вновь встретится в множителе, уже не надо умножать, а сдвинуть на позицию текущего разряда сохранённое число. :)

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

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

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

    Скажите, пожалуйста, как я могу узнать о графике прямых трансляций?

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

      Вроде каждая среда в 9:00

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

      среда 9:00 осталось еще 5 лекций (вроде, насколько я понимаю план на гитхабе)

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

    Не надо обижать глобальные переменные - они очень нужны: конфигурация, флаги синхронизации, управление аппаратурой, управление памятью, корень или список потоков и т.п. А, если уж делать процедуру для многопоточной системы, не оформляя её как поток или как объект, то должна быть процедура управления ей, в которой как раз локальные переменные создаются, а не в main лепить или заставлять пользователя ненужный ему буфер предоставлять и передавать какие-то ненужные ему начальные значения, или оставлять их по умолчанию, переживая правильно ли так. :) Нужна точка входа, само тело рекурсивной функции для этого не подходит, ибо вычислять - это хорошо, но часто необходимо управлять какой либо аппаратурой, не только выделять ресурсы, но и проверять их наличие и готовность при входе.
    И ещё небольшое предостережение. Стек не резиновый, он не имеет виртуализации, его ОС в свап не сбросит, класть в него буфер не очень хорошо, лучше брать память из кучи, а в стеке держать лишь указатель на выделенную память.
    К слову, в Паскале локальные переменные процедуры видны во вложенной процедуре. Размещённая в стеке локальная переменная в запускающей процедуре будет видна во всех вызываемых, в т.ч. и тех, которые сами себя будут рекурсивно вызывать. А передавать данные можно как по ссылке с возможностью или запретом их изменять внутри процедуры, так по значению. Стройность языка. :)

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

      как не крути, но глобальные переменные реально зло, они нужны чтобы быстро збацать что-то не задумываясь об архитектуре вот и все. А если в продакшине у вас до сих пор лежат глобальные переменные, высока вероятность, что вы что-то делаете не так, и это не мое мнение, титаны кодинга об этом говорят уже не первое десятилетие. Я бы еще понял их применение для чего-то мега-специфического, но не для таких вещей как конфиги, для этого придуманы серьезные контракты, типа dependency injection и тд.
      На счет аргументов функции permutations, согласен. На выходе как-то убого получилось, если мне дают функцию которая перебирает варианты чисел, зачем мне знать ее внутренности? Конечному пользователю (да и самому для будущего) знать сколько нужно перебрать, более чем достаточно, дальше как вы и сказали, permutations вызывает какую-то заглушку, аля шаблон фасада, который сам передаст buffer и current, тем самым скроет сложность первичной функции.
      Все эти придирки только показывают, что мы программисты, а не физики )). Не забываем, что Тимофей учит физиков, а не программистов, там уже совсем другой подход. Сами если захотят, то прочитают пару толстых книг и закроют все эти вопросы.

  • @kartezist
    @kartezist 4 роки тому +7

    чтото я за эту лекцию не припомню ни одного фирменного "короче"

    • @tkhirianov
      @tkhirianov  4 роки тому +10

      Спасибо большое за модерацию!

  • @user-or1vr5dk3s
    @user-or1vr5dk3s 3 роки тому +1

    Писал, писал, но всё куда-то исчезло, как вчера исчезла папка "Поток18 "Безпредельность Восприятия" с Рабочего стола. Благодарю, у такого Учителя помолодел с 75 лет паспортных, 60 лет биологических до 18 лет духовных. Оказывается дистанционное обучение у меня получилось "Воспоминание о Прошлом ради Будущего" как омолаживающая геронтологическая процеДУРА. СпасибоГ и ПервоТворец-Абсолют нашей Вселенной, это пока. Но если Питон -Змей соединить с практикой физика Глэшоу, то в 2025 году на нём заползём в гекса-ячейку соседней Вселенной, чтобы залезть на Древо Добра и Зла, ожидая Адама и Еву соседских! Благодарю Тимофея, похоже он из 6-ой Расы Боголюдей...

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

    Int16_t это когда ты не приходишь на 3 лекцию

  • @user-ok4wr4zm5i
    @user-ok4wr4zm5i Рік тому

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

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

    Int16_t это когда ты не приходишь на 3 лекцию