Как найти сложность этого алгоритма?

#python #arrays #complexity-theory

#python #массивы #сложность-теория

Вопрос:

Я пытался найти сложность этого алгоритма, и правильно ли я говорю, что сложность равна O (N * log (N))

Может кто-нибудь показать мне полную работу над сложностью этого алгоритма?

 def binary_min(arr):
    if len(arr) == 1:
        return arr[0]
    else:
        mid = len(arr)//2
        min1 = binary_min(arr[0:mid])
        min2 = binary_min(arr[mid:len(arr)])
        if min1 < min2:
            return min1
        else:
            return min2
  

Ответ №1:

сложность деления на 2 (например, двоичный поиск) log(N) равна, и это будет происходить N раз, поэтому сложность равна Nlog(N)

Ответ №2:

Предполагая, что это алгоритм бинарного поиска, временная сложность будет O(log n) , а временная сложность в лучшем случае O(1) будет там, где mid индекс соответствует желаемому значению.