Я новичок в python. Я реализую бинарный поиск по большому массиву значений, где длина массива равна 258000, я проверил мой код на линейном поиске, он также падает, когда он превышает максимальную глубину рекурсии, поэтому я использую двоичный файл. но двоичный файл также не работает на этом большом массиве, так как я тестирую свой код на маленьком массиве, он работает нормально, вот код:
A = ['John', 'William', 'James', 'Charles', 'George', 'Frank']
names = sorted(A)
print(names)
n = len(names) - 1
low = 0
high = n
key = "James"
def binarysearch(a, l, h, k):
if h < l:
return l - 1
mid = l + (h - l // 2)
if k == names[mid]:
return mid
elif key < names[mid]:
return binarysearch(a, l, mid-1, k)
else:
return binarysearch(a, mid+1, h, k)
index = binarysearch(names, low, high, key)
print("The given Name ", key, "is a Place ", index)
Я знаю, как увеличить sys.setrecursionlimit()
, который я пробовал, но он все еще убивает, потому что он превысил предел ОЗУ, I have use bisect code of python and it works fine
, но, поскольку я новичок в python, я хочу впитать углубленную концепцию алгоритма, а чем встроенные функции, если кто-то может помочь мне исправить этот код, я буду признателен, спасибо