2015-10-23 3 views
0

Я не могу найти текущую сложность функции ниже, так как здесь есть 3 вещи: 1 размер входного файла 2: i значение 3: s. , пожалуйста, помогите мне найти сложность работы с рассуждением.Выполнение сложной функции ниже по причинам

def function(n): 
    i=s=1 
    while s<n: 
     i=i+1 
     s=s+i 
     print("*") 
function(20) 
+0

Что вы думаете о текущей сложности этого кода? – jayant

+0

Какова ваша самая лучшая попытка? Каковы значения переменных после того, как цикл выполнил 'm' раз? – Teepeemm

+0

Значение s на i-й итерации представляет собой сумму первых i положительных целых чисел. Если k - общее количество итераций, принятых программой, –

ответ

1

Это O(sqrt(n)) алгоритм.

The loop runs i times such that `1+2+..i<=n.`[maximum i] 
or 
i*(i+1)/2<=n or i^2/2<=n or i<=sqrt(2n) 
~O(sqrt(n)) 
Смежные вопросы