Сап, двач. Я не могу понять, какая сложность будет у этого говна. Нам же в начале надо пробежаться до 1024 элемента - это сложность O(n), а затем ебнуть 1024 элемент - тут константная сложность O(1). Итого - ответ O(n). Все верно? А какая сложность у смены указателя элемента, который предшествует удаленному? Это не учитывается? Бляяяяяяяяяя, я запутался, помогите
>>254027749 >>254027242 (OP) > пробежаться до 1024 элемента - это сложность O(n) Вот тут ты ошибся в рассуждениях, пробежаться до 1024-го элемента всегда займет одно и то же время, независимо от длины списка
>>254027834 Пиздец, я еще больше запутался. Почему? У нас же список, ссылки на элемент нет, есть только информация о том, что нужно ебнуть 1024 - ый элемент. Адрес то 1024-го мы не знаем.
>>254028475 Ты в шары ебешься? Прочитай что на следующей странице. Операции с рандомным элементом для связаного списка это O(n) Операции с головой O(n)
>>254028475 Чтобы дойти до 1024-го элемента, тебе надо 1024 шага. И похуй сколько там элементов после него. То есть от количества элементов время прохождения до 1024-го никак не изменится.
Аноны, очевидно,что ответ будет O(n), но вопрос тут в другом. Рассудите, либо я тупой, либо лыжи не едут. Какого хуя у них СПИСОК, и чтение элемента списка константное? Они ебанутые? Мб они имели ввиду массив? Потому что судя по рисунку, описывающему строение структуры, которую они называют "списком" - это именно МАССИВ. Пик 2 в качестве доказательства того, что они дебилы. Или я не прав?
>>254027242 (OP) O(1), то есть константа. У тебя сложность этого алгоритма (удаление 1024-го элемента) будет одинакова при любой длине списка. Алгоритм будет такой тебе нужно найти 1023 элемент, записать в него ссылку на 1025 и всё, вне зависимости от n.
Если бы в задании нужно было удалить произвольный элемент, то O(n).
>>254029437 На пикриле список односвязный, поэтому нужно сначала найти предыдущий элемент, пройдя n-1 элементов, потом узнать указатель на n+1 элемент, и записать его в n-1й. Собственно, поэтому сложность O(n).
>>254030016 >>254030099 Нет, ты. У тебя исходно нет указателя на 1023 элемент, его надо найти. Асимптотическая сложность доступа по индексу в односвязном списке O(n).
>>254027242 (OP) Сука, кто так задачу формулирует, по башке камнем бить надо. Поэтому пидарашня везде и сосет. Открываешь любой западный задачник, там все понятно изложено со схемами, ясно и на пальцах, тут же 10 интерпретаций можно из такой постановки вывести. Даже схему блядь нормально нарисовать не могут, все какими-то намеками ебнутыми.
>>254030148 Знаешь как найти 1024 элемент? Начиная с head идти по указателю на следующий 1024 раза? Теперь смотри.
Сколько операций будет совершено при длине 1024? 1024 При длине 10000? 1024 При длине 1000000? 1024
Какой вывод можно сделать? Правильно, сложность не зависит от длины списка, то есть она постоянная, иначе говоря константная. А константная сложность это O(n)? Правильно, нет, она O(1)
>>254027242 (OP) > А какая сложность у смены указателя элемента, который предшествует удаленному? Долбоеб, удаление это и есть перезапись указателя предыдущего элемента на указатель элемента который следует через удаляемый.
>>254030599 Поддерживаю этого анона. Вдобавок в таких простых задачах можно явно написать формулу количества операций от n. Если подобные простые рассуждения не помогают разобраться, выпиши формулу и найди O(n).
>>254030679 Список может быть как с массивом под капотом, так и как связная структура. Если массив, то доступ по индексу и сдвиг. Если связная структура, то поиск и константная смена указателей. В любом случае O(n)
>>254030679 Тебе выше уже несколько раз объяснили почему O(1). O(n) если бы например просили удалить элемент по середине. O(1024) -> O(1) O(n/2) -> O(n)
>>254030599 Ох лол. Тебе про асимптотическую сложность, а ты про частный случай. Давай по-другому. У тебя есть массив из 100 элементов. Сложность сортировки квиксортом в среднем O(n*log(n)). Какова сложность его сортировки? Константная, скажешь, т.к. количество элементов всегда одно и то же?
>>254030936 Ответы перечитай. По твоей логике там нет правильного ответа. Ибо ответ O(1) так как удаление константное не подходит. А O(N) подходит, так как упоминается поиск, который у тебя есть. Ну и N и n немного разные буквы.
>>254031019 То что задачу долбаёб формулировал это другая история. Я привёл пример выше когда твой вариант будет верным - если бы просили удалить элемент по середине, например
>>254031064 Вопрос поставлен ебануто как ТЗ ирл и вертится как дышло, тут либо обсуждать с человеком который его задал, либо слать нахуй такие галеры. Хорошо что я в свое время такое говно не проходил. 300к/нс синьор
>>254031029 Давай, рассказывай мне про понимание, гражданин константа. У тебя проход по списку из долгого обхода превратился в моментальный доступ, пиздец, ещё и других поучаешь.
>>254030862 Да. Так же как многие задачи на строки требуют работы с мапой символ (lower case english only) - число (индекс, кол-во повторений и т.д.) и работа с этим списком считается за константу. Потому что твоя обоссаная сотня – ничто в сравнении с N.
>>254031133 Раз ты синьор-помидор, значит, логично, что когда то был джуном. И как же тебя угораздило вкатиться на джуна без знания всего этого говна? Это ведь на каждом собесе спрашивают
>>254031401 > И как же тебя угораздило вкатиться на джуна без знания всего этого говна? Чел, 10-15 лет назад достаточно было показать, что ты в состоянии поднять LAMP и написать простенькое говно на пыхе. А не вертеть жопой с конкурсом 1кк человек на место.
>>254031133 Ох, опять эти мантры про не такое ТЗ. Щас заказчик для тебя всё разжуёт, ещё и алгоритм распишет. На синьорском уровне пора бы уже уметь читать между строк, угадывать и предлагать бизнесу лучшие решения самостоятельно. А не писать по каждому чиху заказчику и потом оправдываться при проёбе сроков тем, что ты не знал деталей имплементации бизнес-логики
Если бы ты искал элемент со значением 1024, не зная его место в списке, то сложность была бы O(n). В худшем случае ты пройдешь все n элементов. Количество операций в худшем случае зависит от длины списка линейно.
Когда ты знаешь, где находится элемент, его место в списке, например 1024, то поиск выполнять не нужно. Для доступа к элементу нужно будет пройти по списку, но всегда ты это сделаешь за одинаковое количество операций, каким бы длинным не был список.
Подумай спокойно, тебе ведь не говорят, что ты глупый или что-то в этом духе, пытаются объяснить и помочь разобраться. Че ты, мистер константа, обидно же
>>254031401 Ну наверно я общался с людьми просто, а не с бездушными машинами тестами написанными анальниками с дислексией и неспособностью посмотреть на свой же текст под другими углами.
>>254031441 Чел, ну ты абсолютно не понимаешь сути. Ты как макака которая вычитала баззворды и запомнила их. Тебе уже разные примеры привели в этом треде, и так и сяк, а ты пиздец упираешься как баран. Я не буду повторно объяснять почему ты не прав, просто иди нахуй
>>254031480 А я не говорю что ТЗ должно быть идеально расписано. Просто тут нужна обратная связь. Спросить, от нас хотят узнать знаем ли мы стоимость удаления элемента в связном списке (например при итерации) когда мы уже на нём. Или хотят проверить, знаем ли мы, что для удаления в связном списке нужно добежать до элемента.
Зависит ли скорость работы функции доступа к 1кк-тому всегда к нему, не к вашему обоссаному случайному, а имеено к этому индексу, мы его захардколили нахуй элементу связного списка от его размера? Теперь соедините это с тем, что показывает О.
>>254031558 А вы прочли вообще, что написано курсивом в задании? Доступа по индексу НЕТ, константного времени НЕТ, оно линейное - O(n). Удаление - константное, да, O(1)
>>254031441 Пиздец ты даун, тебя уже весь сосач хуесосит. Доступ к произвольному элементу O(n), а у тебя известен номер, он никак от n не зависит. А вот удаление например n//2-того элемента, внезапно, будет происходить за O(n).
>>254031696 Никто не говорит про доступ по индексу. У тебя при различной длине массива, алгоритм будет совершать одинаковое число операций - 1024. O(N) - линейная сложность, то есть у тебя количество операций должно линейно зависеть от N.
>>254031813 Ты можешь нарисовать график сложности доступа к захардкоженному 1кк-тому элементу для списка размером от 1кк до 2кк? и увидеть что это обоссаная прямая
Ну к слову про O(1) доступ. Ничто не мешает написать head.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next.next
Так что я тоже записываюсь в секту свидетелей константы.
>>254031972 Обоссаная прямая - это и есть O(n), линейная сложность. Что ты мне этим доказать хотел я так и не понял. Пусть количество операций чтения одинаковое для 1024 элементов. 1024 - это и есть n. Чтобы удалить n элемент нужно совершить n операций чтения из листа. Почему, я объяснял в этом >>254029911 посте. А в этом >>254031813 тебе объяснили другие анонимы со stackoverflow. Пиздец, столько гонору у вас, ребятки. RTFM.
>>254031696 Доступ по индексу это линейный в общем случае, для произвольного индекса, так как от его значения зависит сколько элементов ты пробежишь. В задаче спрашивается сложность удаления не элемента с индексом i например, а элемента с индексом 1024.
>>254032127 Именно что N-й, а не 1024. Когда говоришь об N-м речь идёт о количестве операций в худшем случае, а когда о 1024-м - о конкретном случае, а не о многообразии потенциально возможных
>>254032221 Из чего следует, что доступ к 1кк+1 элементу будет происходить за то же время, что и к 1кк? Не понял график. >>254032286 В этом конкретном случае 1024 и есть n. И вообще сказано достаточно, sapienti sat.
>>254032448 Окей, это так. Я не понимаю почему свидетели константы считают, что если количество операций чтения одно и то же для i-го элемента, обход листа из O(n) превращается в O(1). Ну в упор не понимаю с чего вдруг взялось это упрощение, и уже начинаю сомневаться в своей способности рассуждать логически. Доступ к первому элементу, n=1, окей, время доступа O(n). Доступ к 1кк элементу, n=1kk, время доступа O(n). Где я ошибаюсь?
>>254032594 Давай разделим все эти индексы немного. n - количество элементов списка. Сложность удаления i-го элемента по-хорошему O(i).
Сколько операций нужно для удаления i-го элемента? i = O(i).
Если тебе всегда нужно удалять элемент с одним и тем же номером, то и операций всегда будет одинаковое количество. В задаче с первого пика это 1024 = O(1)
>>254032594 У тебя n не может быть привязано к константе.
> Доступ к первому элементу, n=1, окей, время доступа O(n) то есть ты не можешь сказать, n=1 значит время O(n). n в функции O - это длина массива, если так понятнее будет.
>>254032594 Потому что n в Big O notation стремится к бесконечности. Если бы ты получал два аргумента - список и номер элемента, то да, комплексити было бы O(n). Но ты получаешь только список (размер которого стремится к бесконечности для оценки комплексити), а номер элемента у тебя константа, и никак не может быть n. Все твои фантазии и "доказательства" со списком короче 1024 элементов полная хуета, ты не понимаешь определения нотации в которой пытаешься выразить сложность.
>>254028656 >Операции с рандомным элементом для связаного списка это O(n) Ты еблан? В задаче ни слова нет про РАНДОМНЫЙ элемент. Там речь идет про конкретный элемент. Для любого n сложность будет одна и та же.
>>254027242 (OP) Тред не читал. Сложность смены указателя либо О(1) если ты его запомнил либо О(1023) если опять до него надо пиздюхать, то есть О(2n) что вообщем тоже O(n)
>>254029184 Лол, ты не знаешь разницу между списком и массивом? Или не знаешь, что списки бывают не только связанными? Тебе написали русским языком, что список индексированный, но до тебя это так и не дошло.
>>254027242 (OP) Я в проге особо не шарю, но вроде как O(1), потому что все что нужно это перевести указатель из 1023 на 1025 вместо 1024, для этого достаточно узнать, какой адрес у 1025 элемента, те дойти до него. Это делается за 1025 шагов вне зависимости от размера списка
Ржу с треда Срач буквально из-за ничего, просто пара макак-вкатунов в треде не проходили даже одного семестра вузовской математики где учат пределы. Оп-студент, давай про0оди курс и ищи стажку. Удачи
>>254033484 >математики где учат пределы Лол, еблан не осилил даже родной язык. Еблан, также, думает, что здесь какие-то сраные пределы играют какую-то сраную роль. Еблан, также, думает, что его сраное мнение кого-то взволнует. Але, еблан, таких, как ты, тут и так как говна за баней.