У меня есть вложенный список чисел, где я получил 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), но я не совсем уверен в этом.Так какова сложность этого кода в реальном времени?