Untitled

 avatar
unknown
python
3 years ago
2.4 kB
3
Indexable
import time
import random

# number of items to search (global constant)
N = 10000

# ----- Create data structures with random numbers ---------

# 1. Create a list and add random numbers to the list
print("Adding numbers to list ...", end = "")
number_list = []
while len(number_list) < N:
    random_number = random.randint(0, N**3)
    if random_number not in number_list:
        number_list.append(random_number)
print("...done")

print(len(number_list))


# 2. Create a dictionary and add random numbers to the dict
print("Adding numbers to dict ...", end = "")
number_dict = {}
for i in range( len(number_list) ):
    number_dict[number_list[i]] = number_list[i]
print("...done")

# print(number_list)
# print(number_dict)
print(f'\nTotal numbers: {N}')
# ------------------------------------------------------------ #


# Analyzing run-time - 1, searches evaluating to True

# Record the start time for list
tic = time.perf_counter()
# print(tic)

for n in number_list:
    n in number_list  # check if n is in number_list, always returns True

# Record the end time
toc = time.perf_counter()
# print(toc)

# Print the time difference
print(f"Time taken for {N} searches evaluating to True in a List   : {round(toc-tic,4)} seconds")


####
# Record the start time for dict
tic = time.perf_counter()
for n in number_dict:
    n in number_dict     # check if n is in number_dict.keys(), always returns True
    
# Record the end time
toc = time.perf_counter()

# Print the time difference
print(f"Time taken for {N} searches evaluating to True in a Dict   : {round(toc-tic,4)} seconds")
print()


# ------------------------------------------------------------ #
# Analyzing run-time - 2, searches evaluating to False
# Record the start time for list
tic = time.perf_counter()
for n in number_list:
    -n in number_list     # check if -n is in number_list, returns False always

# Record the end time
toc = time.perf_counter()

# Print the time difference
print(f"Time taken for {N} searches evaluating to False in a List   : {round(toc-tic,4)} seconds")

####
# Record the start time for dict
tic = time.perf_counter()
for n in number_dict:
    -n in number_dict    # check if -n is in number_dict.keys(), always returns False
    
# Record the end time
toc = time.perf_counter()

# Print the time difference
print(f"Time taken for {N} searches evaluating to False in a Dict   : {round(toc-tic,4)} seconds")py
Editor is loading...