learn-python/Searching algorithms/Meta Binary Search.py

19 wiersze
540 B
Python

import math
def bsearch(A, key_to_search):
n = len(A)
lg = int(math.log2(n-1)) + 1
pos = 0
for i in range(lg - 1, -1, -1):
if A[pos] == key_to_search:
return pos
new_pos = pos | (1 << i)
if new_pos < n and A[new_pos] <= key_to_search:
pos = new_pos
return pos if A[pos] == key_to_search else -1
if __name__ == "__main__":
A = list(map(int, input("Enter the array elements: ").split()))
key = int(input("Enter the number to search: "))
print(bsearch(A, key))