Сложность алгоритма Большое О

Поділитися
Вставка
  • Опубліковано 6 жов 2024
  • Хотите повлиять на темы сюжетов? Вам сюда
    itspher...
    Я в ВК id26420520
    Группа в ВК itspher...
    Опрос в группе itspher...
    Всем привет как и обещал отснял сюжет посвященный определению временной сложности выполнения алгоритмов. На собеседовании об этом обычно не спрашивают но могут спросить в контексте какой-нибудь другой темы. Например задать такой вопрос “Напишите временную сложность поиска в ArrayList”. Поэтому данный ролик надеюсь будет полезен и подготовит вас к подобного рода вопросам. Про ArrayList и LinkedList можно посмотреть тут а про HashMap тут. Кстати количество аннотаций походу будет расти линейно в зависимости от количества роликов на моем канале)). Не, не будет!)
    Я думаю что большинство из вас уже не раз встречали с таково рода обозначениями
    f(n) = O(1) константа
    f(n) = O(log(n)) логарифмический рост
    f(n) = O(n) линейный рост
    f(n) = O(n*log(n)) квазилинейный рост
    f(n) = O(n^m) полиномиальный рост
    f(n) = O(2^n) экспоненциальный рост
    Мне кажется не разумным способ просто запоминать какому алгоритму относится тот или иной класс сложности. Гораздо полезнее уметь в уме примерно прикинуть насколько изменится время выполнения при увеличении входных данных(N). Тогда я постараюсь рассказать как это можно сделать.
    O(1) - Начнем пожалуй с константной сложности.
    Представим что студент Серега в своем тел. справочнике загнул страничку с телефоном его одногруппницы Светки. Это позволяет искать номер Светки в среднем за константное время т. к. нет прямой зависимости от количества номеров или она очень невелика на столько что ей можно пренебречь.
    Почему в среднем? Да потому что ему приходилось перебрать определенное количество записей на данной страничке этим числом можно пренебречь также т. к. оно мало.
    Примером может служить поиск в хеш-таблице если в одной “корзинке” один объект.
    O(log n) - Логарифмическая сложность
    С логарифмической сложность уже посложнее. Представим что Серега только познакомился со Светкой. Он знает ее фамилию как он будет искать страничку с ее номером? Он открыл справочник в середине и попал на какую-то запись смотрит а там фамилия начинается на букву которая в алфавите идет раньше чем фамилия Светки. Значит Светка находится во второй половине справочника. Теперь он берет стопку листов справочника где предположительно находится его Светка. И открывает эту стопку тоже по середине и так далее пока не найдет Светку. Понимаете? Получается такой бинарный поиск. Количество сравнений которые ему потребуется сделать будет равняться log по основанию 2 от количества страниц в справочнике.

КОМЕНТАРІ • 45

  • @anjelomanoranjan
    @anjelomanoranjan 4 місяці тому

    Отличная работа! Спасибо, друг!

  • @serdotsenko
    @serdotsenko 10 років тому +40

    неплохая попытка! но скажу честно, если бы я раньше этот вопрос не изучал, то только просмотрев это видео вряд ли что-нибудь бы понял )) говорю ж не хватает визуализации... например хотя бы что-нибудь в таком стиле cs.usfca.edu/~galles/visualization/Algorithms.html
    да видел примеры в динамике картинка на первом шаге, потом на втором, потом на третьем... но без анимации не оно (( за то что тратишь силы и пытаешься делать хоть как умешь, ставлю лайк ))

    • @aliaksandrbudnikau
      @aliaksandrbudnikau  10 років тому +2

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

    • @aliaksandrbudnikau
      @aliaksandrbudnikau  10 років тому +3

      ***** Только что посмотрел ссылку. Офигенно!!

    • @serdotsenko
      @serdotsenko 10 років тому +1

      Будников Александр теперь нужно каким-то чудом скрестить твои обяъяснения с этой офигенной анимацией ))

    • @Алексей-о9б4г
      @Алексей-о9б4г 7 років тому +2

      Sergii Dotsenko, благодарю за отличную ссылку. Это чудесно!

  • @KonstantinGanchin
    @KonstantinGanchin 10 років тому +19

    Автору спасибо, что взялся за эту тему, но скорость изложения превосходит все разумные пределы переваривания информации! Надо по десять раз перематывать назад чуть ли не каждое предложение, чтобы понять главную мысль! Помедленнее, пожалуйста! Я записываю :)

    • @AlexanderManzyuk
      @AlexanderManzyuk 6 років тому +1

      А я чота сразу понял

    • @slavanik169
      @slavanik169 6 років тому +1

      Норм, особенно когда привык смотреть x2

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

    а мне понравилось, так держать

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

    Красавчик)

  • @anton9036
    @anton9036 8 років тому +14

    На 1:16.
    f(n) = O(g(n))
    "функция f растет медленнее, чем g", следующий кадр "при c = c1 и n = N"
    Я не понял, откуда взялось c?

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

      Не обращайте внимания. Просто смотрите дальше, и без начала всё становится понятно.

  • @kjh4365z
    @kjh4365z 9 років тому +32

    Класть, а не лОжить)))

  • @olgan.97
    @olgan.97 8 років тому +1

    Спасибо, большое! Супер!
    Все ясно и понятно!!!!

  • @IgorVelichkevich
    @IgorVelichkevich 10 років тому

    Не, ну земля и небо! Вообще круто смотрится! Соглашусь с@СергійДоценко, не возможно все понять только просмотрев видео, а еще КЛАСТЬ, а не "ложить". Ну а так супер, даже не верится что это ты!

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

    вот здесь вот )))))))))))))))

  • @atillaattila8900
    @atillaattila8900 6 років тому

    Спасибо за информацию

  • @husivm
    @husivm 7 років тому

    Спасибо огромное, очень круто, хорошо объясняешь!

  • @g.a_yan3967
    @g.a_yan3967 6 років тому +1

    Это понятно когда уже сам все знаешь, а если тебе надо понять то даже и не слушай

  • @gregory.vovchok
    @gregory.vovchok 5 років тому

    Для бинарного дерева O(log n) будет в лучшем случае, и O(n) в худшем, если оно не сбалансировано (входные данные были отсортированными)

  • @Sergey-e8e
    @Sergey-e8e 7 років тому +1

    Да ладно вам. Смотрю на скорости ускоренно полтора и все очень разжевано и понятно! Повторить тему самое оно.

  • @АлександрПлеханов-й9ы

    Так я и не понял, Серёга нашел номер Светки?

  • @glepfingerman7731
    @glepfingerman7731 7 років тому

    Вы можете сделать примеры оценки сложности с небольшими источниками на С++?

  • @peratux
    @peratux 7 років тому +2

    Когда страницы перепутаны, а Сереге нужно найти номер Светки - ему мало просто все страницы просмотреть? Нафиг он их сортирует)))? Это ж 2 разные задачи, причем не связанные по большому счету. Пример - отстой)

  • @WEBSTART-LIVE
    @WEBSTART-LIVE 3 роки тому

    не хватает визуализации, или мнемоники. При просмотре видео не задействуется зрительная память. Это ухудшает запоминание)

  • @xkamler6119
    @xkamler6119 5 років тому

    Oh yeah, спасибо, m8 )0))

  • @vlasevich
    @vlasevich 9 років тому +3

    Бедный Серёга

  • @AtNovember
    @AtNovember 8 років тому +4

    было бы удобнее информацию воспринимать графически,
    т.е. в виде
    функция
    название
    график
    и только потом объяснение. На слух воспринимается тяжеловато (

  • @dilshodrahmatov3058
    @dilshodrahmatov3058 7 років тому +2

    Kupil dom za 250 000 Euro, kupil noviy zamok dlya novogo doma za 4,99 Euro. Za skolko oboshlos mne dom? Mi govorim za 250 000 Euro a ne 250 004,99 Euro. 250 000 Euro eto i est bolshoe O!!

  • @Alexey319
    @Alexey319 9 років тому

    Не понятно, что за "c" и "c1" в формуле f(n) = O(g(n))? И скажем если с1 = 0.1*e-1000 и n = 3, то будет ли всегда c1*g(3) >= f(3)? В общем вообще не понятно что такое "с" и как его выбирать.

  • @skiermaxsm337
    @skiermaxsm337 6 років тому

    Ложит.....Автору тоже нужен справочник, только уже не с телефоном Светки )). Автор, ты не рэпчик читаешь, помедленнее, пожалуйста!

  • @zhbanchikk
    @zhbanchikk 7 років тому

    ложит!!!

  • @ArcadeMdns
    @ArcadeMdns 7 років тому

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

  • @YAliso4ka
    @YAliso4ka 9 років тому

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

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

    03:52 на каком уровне то

  • @ttttt5191
    @ttttt5191 8 років тому +8

    Ты сам то понял что протараторил? Или ты просто откуда то считал? Ты объясняешь тем кто НЕ понимает а не тем кто понимает. Вспоминай об этом иногда, чувак

    • @andrewkononenko9436
      @andrewkononenko9436 8 років тому +4

      Не понимал, не изучал, это и не требуется. Нужно просто знать математику 10-11й класс + сами алгоритмы. Теперь стало понятно.

    • @Sergey-e8e
      @Sergey-e8e 8 років тому

      +

  • @glepfingerman7731
    @glepfingerman7731 7 років тому

    *исходниками*

  • @IgorDataScience
    @IgorDataScience 9 років тому

    Определения О не верные

    • @aliaksandrbudnikau
      @aliaksandrbudnikau  9 років тому +1

      Игорь Клейнер Добрый день. Спасибо. за замечание. Если не затруднит не могли бы в комментарий написать где я ошибаюсь. Я вставлю аннотацию с текстом.

  • @slayer-mk5tl
    @slayer-mk5tl 2 роки тому +1

    не дан ответ про хешмап, и даже в коментарии не соизволил написать. диз

  • @chris.p-dev
    @chris.p-dev 8 років тому +1

    Верни бороду!!!

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

    Невнятная дикция