for i := 1 to n do
j := 2;
while j < i do
j := j^4;
Я действительно смущен, когда речь идет о нотации Big-O, поэтому я хотел бы знать, если это O (n log n). Это моя кишка, но я не могу это доказать. Я знаю, что цикл while, вероятно, быстрее, чем log n, но я не знаю, насколько!Что такое большой O этого небольшого фрагмента кода?
Редактировать: каретка обозначает экспоненту.
Что делает 'j^4'? Является ли это XOR или возведение в степень? – MAK
После шагов 'k' внутреннего цикла' j' строго больше, чем '2^k'. Таким образом, существует не более стадий внутреннего цикла log log, и, конечно, «n» шагов внешнего цикла. Это ваше доказательство того, что op - O (n log n) - предполагая, конечно, что задействованные типы - это мифические «целые числа, которые никогда не переполняются, а имеют арифметические операции с постоянным временем» ;-). Для реалистичных диаграмм нужно учитывать некоторые дополнительные полиномиальные термины в 'log n', а для реалистичных int-int фиксированного размера' j' так быстро взрывается, что переполнение происходит для многих значений 'i' и' j' застрял на 0 ... –