Python - временная сложность алгоритма бинарного поиска во вложенном списке - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть вложенный список чисел, где я получил n строк и столбцов, и каждое число увеличивается в каждой строке и столбце.

Например:

A = [[19, 30, 31, 45, 57],
     [25, 32, 32, 51, 69],
     [33, 35, 38, 58, 78],
     [34, 49, 67, 84, 102],
     [44, 54, 73, 90, 115]]

Мне нужно использовать бинарный поиск, чтобы определить, есть ли элемент в списке, и сложность времени в худшем случае алгоритма должна быть O (n).

У меня есть этот код:

def find(A, v):
    i = 0

    for row in A:
        num = binary_search(v, row, 0, len(row) - 1)
        if num != -1:
            return(i, num)
        i += 1

    return None


def binary_search(v, row, left, right):
    if left > right:
        return -1

    mid = (left + right) // 2

    if row[mid] == v:
        return mid

    elif row[mid] > v:
        return binary_search(v, row, left, mid - 1)

    elif row[mid] < v:
        return binary_search(v, row, mid + 1, right)

Я думаю, что этот код имеет временную сложность O (n log n), но я не совсем уверен в этом.Так какова сложность этого кода в реальном времени?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...