2015-12-07 3 views
-4

Какое время работает?Каково время работы этих функций?

def a(n): 
    if n % 2 == 0: 
     return n 
    else: 
     return a(n/2) 

Мое предположение T (n) = T (n/2) + 1, затем используйте основную теорему.


Как насчет этой функции:

def b(n): 
    for i in range(n): 
     print(a(i)) 

Это мое предположение.

Т (п) = пТ (п/2) + 1

+0

Какая версия python? –

+0

Не имеет значения. Мне просто нужна теоретическая временная сложность. – None

+0

Когда вы говорите n/2, вы берете слово? –

ответ

1

Первый из них представляет собой О (LogN) вторая представляет собой О (NlogN).

1) Вы разрешаете проблему пополам на каждой итерации. Таким образом, общее количество раз вы итерация является:

я такой, что 2 ** я = N, в математике я = LogN в базе 2. Там для O (LogN)

2) Вы перебор весь список размеров N, так что O (N), но вы вызываете функцию logN на каждой итерации. Таким образом, мы вызываем функцию logN N раз. Это O (NlogN).

+0

Будет ли алгоритм дегенерировать? – None

+0

Я действительно надеялся получить формальное доказательство с использованием основной теоремы с T (N) – None

+1

Второй - NlogN –