devops-exercises/coding/python/binary_search.py
abregman e54648d47f Modify the structure of README.md
Instead of having exercises in their own separate section,
they are now part of the main topics sections.

This should make the learning process easier to follow
where users have both exercises and questions in the same
place.

In addition, added a couple of new questions & exercises
and modified existing scripts accordingly.
2021-07-12 02:02:57 +03:00

28 lines
733 B
Python

#!/usr/bin/env python
import random
def binary_search(arr, lb, ub, target):
"""
A Binary Search Example which has O(log n) time complexity.
"""
if lb <= ub:
mid = ub + lb // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search(arr, mid + 1, ub, target)
else:
return binary_search(arr, lb, mid - 1, target)
else:
return -1
if __name__ == '__main__':
rand_num_li = sorted([random.randint(1, 50) for _ in range(10)])
target = random.randint(1, 50)
print("List: {}\nTarget: {}\nIndex: {}".format(
rand_num_li, target,
binary_search(rand_num_li, 0, len(rand_num_li) - 1, target)))