from timeit import timeit
from random import randint
list_to_search = [i for i in range(1000000)]
#######################################################################
# COPY AND PASTE YOUR linear_search AND binary_search functions below #
#######################################################################
def linear_search(numbers,search_num):
for position, item in enumerate(numbers):
if(item == search_num):
#print(item, " is at position ", position)
#print("stop search at position",position)
break
def binary_search(sorted_list,searched_item):
left = 0
#print("left",left)
#time.sleep(2)
right = len(sorted_list) - 1
#print("right",right)
#time.sleep(2)
while(left <= right):
mid = int((right + left) / 2)
#print("mid",mid)
#time.sleep(2)
if(sorted_list[mid] > searched_item):
right = mid - 1
#print("left",left)
#print("right",right)
#time.sleep(2)
elif(sorted_list[mid] < searched_item):
left = mid + 1
#print("left",left)
#print("right",right)
#time.sleep(2)
elif(sorted_list[mid] == searched_item):
return sorted_list[mid]
else:
return False
ls = lambda: linear_search(list_to_search, randint(0,1000000))
bs = lambda: binary_search(list_to_search, randint(0,1000000))
print(1000000,"numbers")
#time the functions for 100 runs each
print("Linear search took:")
print(timeit(ls, number = 100))
print("Binary search took:")
print(timeit(bs, number = 100))
list_to_search = [i for i in range(100000)]
ls = lambda: linear_search(list_to_search, randint(0,100000))
bs = lambda: binary_search(list_to_search, randint(0,100000))
print(100000,"numbers")
#time the functions for 100 runs each
print("Linear search took:")
print(timeit(ls, number = 100))
print("Binary search took:")
print(timeit(bs, number = 100))
list_to_search = [i for i in range(10000)]
ls = lambda: linear_search(list_to_search, randint(0,10000))
bs = lambda: binary_search(list_to_search, randint(0,10000))
print(10000,"numbers")
#time the functions for 100 runs each
print("Linear search took:")
print(timeit(ls, number = 100))
print("Binary search took:")
print(timeit(bs, number = 100))
list_to_search = [i for i in range(1000)]
ls = lambda: linear_search(list_to_search, randint(0,1000))
bs = lambda: binary_search(list_to_search, randint(0,1000))
print(1000,"numbers")
#time the functions for 100 runs each
print("Linear search took:")
print(timeit(ls, number = 100))
print("Binary search took:")
print(timeit(bs, number = 100))
Comments