upd binary searches

This commit is contained in:
2024-01-08 10:38:49 +00:00
parent d646cb83c1
commit ea9af3f1c7
2 changed files with 53 additions and 14 deletions

View File

@@ -6,13 +6,7 @@ logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
LOWER = 1000
UPPER = 1000000
SAMPLE_SIZE = 1000
def binary_search(arr, item):
count = 1
low = 0
high = len(arr) - 1
@@ -20,27 +14,29 @@ def binary_search(arr, item):
mid = (low + high) // 2
guess = arr[mid]
if guess == item:
logger.debug(f"found item after {count} splits")
return mid
elif guess > item:
high = mid - 1
else:
low = mid + 1
count += 1
return None
LOWER = 1000
UPPER = 1000000
SAMPLE_SIZE = 1000
numbers = random.sample(range(LOWER, UPPER), SAMPLE_SIZE)
numbers.sort()
logger.debug(numbers)
start = time.time()
res = None
while res is None:
result = None
while result is None:
guess = random.randrange(LOWER, UPPER)
res = binary_search(numbers, guess)
logger.debug(f"guess: {guess}")
result = binary_search(numbers, guess)
print(f"Found {guess} at index {res}. Running time {time.time() - start}")
print(f"Found {guess} at index {result}. Running time {time.time() - start}")