[1] task-1 #172
498
lukovnikovde/docs/data/DataStructure.py
Normal file
498
lukovnikovde/docs/data/DataStructure.py
Normal file
|
|
@ -0,0 +1,498 @@
|
|||
import random as rnd
|
||||
import time
|
||||
import csv
|
||||
import matplotlib.pyplot as plt
|
||||
#############################################################################################
|
||||
|
||||
def sort_list(name_list):
|
||||
l = len(name_list)
|
||||
for i in range(l - 1):
|
||||
for j in range(l - i - 1):
|
||||
if name_list[j][0] > name_list[j + 1][0]:
|
||||
name_list[j], name_list[j + 1] = name_list[j + 1], name_list[j]
|
||||
return name_list
|
||||
|
||||
def hash_key(name):
|
||||
h_key = sum(ord(ch) for ch in name)
|
||||
return h_key
|
||||
|
||||
def create_name_phone(i):
|
||||
name = f"User_{i:03d}"
|
||||
phone = f"{rnd.randint(100, 999)}-{rnd.randint(100, 999)}"
|
||||
return (name, phone)
|
||||
|
||||
def file_insert(results):
|
||||
with open("results.csv", "w", encoding = "utf-8-sig", newline = "") as file:
|
||||
writer = csv.writer(file)
|
||||
writer.writerows(results)
|
||||
|
||||
def drow(time, color_fun):
|
||||
x = []
|
||||
y = []
|
||||
for key in time:
|
||||
x.append(key)
|
||||
y.append(time[key] * 1000)
|
||||
plt.plot(x, y, marker = ".", color = color_fun, markersize = 2, alpha = 0.9)
|
||||
|
||||
|
||||
|
||||
###########################################################################################################################
|
||||
|
||||
def ll_insert(head, name, phone):
|
||||
next_node = {'name': name, 'phone': phone, 'next': None}
|
||||
if head is None: return next_node
|
||||
|
||||
running = head
|
||||
while running is not None:
|
||||
if running['name'] == name:
|
||||
running['phone'] = phone
|
||||
return head
|
||||
running = running['next']
|
||||
|
||||
running = head
|
||||
while running['next'] is not None: running = running['next']
|
||||
running['next'] = next_node
|
||||
return head
|
||||
|
||||
def ll_find(head, name):
|
||||
running = head
|
||||
|
||||
while True:
|
||||
if running['name'] == name:
|
||||
return running['phone']
|
||||
running = running['next']
|
||||
if running is None: break
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def ll_delete(head, name):
|
||||
running = head
|
||||
|
||||
if running['name'] == name:
|
||||
return head['next']
|
||||
|
||||
while running['next']['name'] != name:
|
||||
running = running['next']
|
||||
if running['next']['next'] is None:
|
||||
if running['next']['name'] != name:
|
||||
return head
|
||||
if running['next']['next'] is None:
|
||||
running['next'] = None
|
||||
else: running['next'] = running['next']['next']
|
||||
|
||||
return head
|
||||
|
||||
|
||||
def ll_list_all(head):
|
||||
name_list = []
|
||||
running = head
|
||||
while running is not None:
|
||||
name_list.append((running['name'], running['phone']))
|
||||
running = running['next']
|
||||
return name_list
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
|
||||
def LinkedList(head, phone_book):
|
||||
|
||||
start_insert = time.perf_counter()
|
||||
for i in range(len(phone_book)):
|
||||
|
||||
head = ll_insert(head, phone_book[i][0], phone_book[i][1])
|
||||
#print(head)
|
||||
end_insert = time.perf_counter()
|
||||
time_insert = end_insert - start_insert
|
||||
|
||||
start_find = time.perf_counter()
|
||||
for _ in range(100):
|
||||
name = create_name_phone(rnd.randint(0, 999))[0]
|
||||
phone = ll_find(head, name)
|
||||
#print(name, ":", phone)
|
||||
end_find = time.perf_counter()
|
||||
time_find = end_find - start_find
|
||||
|
||||
|
||||
start_delete = time.perf_counter()
|
||||
for i in range(110):
|
||||
if i <= 99: name = f"User_{rnd.randint(0,999):03d}"
|
||||
else: name = f"None_{i:03d}"
|
||||
head = ll_delete(head, name)
|
||||
end_delete = time.perf_counter()
|
||||
time_delete = end_delete - start_delete
|
||||
|
||||
|
||||
start_list = time.perf_counter()
|
||||
name_list = sort_list(ll_list_all(head))
|
||||
#print(*name_list)
|
||||
end_list = time.perf_counter()
|
||||
time_list = end_list - start_list
|
||||
|
||||
return (time_insert, time_find, time_delete, time_list)
|
||||
|
||||
#########################################################################################################
|
||||
|
||||
def ht_insert(buckest, name, phone):
|
||||
index = hash_key(name) % len(buckest)
|
||||
for i, (Name, Phone) in enumerate(buckest[index]):
|
||||
if Name == name:
|
||||
buckest[index][i] = (name, phone)
|
||||
return buckest
|
||||
buckest[index].append((name, phone))
|
||||
return buckest
|
||||
|
||||
def ht_find(buckest, name):
|
||||
index = hash_key(name) % len(buckest)
|
||||
for (Name, Phone) in buckest[index]:
|
||||
if Name == name:
|
||||
return Phone
|
||||
return None
|
||||
|
||||
def ht_list_all(buckest):
|
||||
|
||||
name_list = []
|
||||
|
||||
for index in range(len(buckest)):
|
||||
for i, (name, phone) in enumerate(buckest[index]):
|
||||
name_list.append((name, phone))
|
||||
|
||||
name_list = sort_list(name_list)
|
||||
|
||||
return name_list
|
||||
|
||||
|
||||
def ht_delete(buckest, name):
|
||||
index = hash_key(name) % len(buckest)
|
||||
for i, (Name, Phone) in enumerate(buckest[index]):
|
||||
if Name == name:
|
||||
del buckest[index][i]
|
||||
return buckest
|
||||
|
||||
|
||||
####################################################################################################
|
||||
|
||||
def HashTable(buckest, phone_book):
|
||||
|
||||
|
||||
start_insert = time.perf_counter()
|
||||
for i in range(len(phone_book)):
|
||||
|
||||
buckest = ht_insert(buckest, phone_book[i][0], phone_book[i][1])
|
||||
#print(buckest)
|
||||
end_insert = time.perf_counter()
|
||||
time_insert = end_insert - start_insert
|
||||
|
||||
|
||||
start_find = time.perf_counter()
|
||||
for _ in range(100):
|
||||
name = create_name_phone(rnd.randint(0, 999))[0]
|
||||
phone = ht_find(buckest, name)
|
||||
#print(name, ":", phone)
|
||||
end_find = time.perf_counter()
|
||||
time_find = end_find - start_find
|
||||
|
||||
|
||||
start_delete = time.perf_counter()
|
||||
for i in range(110):
|
||||
if i <= 99: name = f"User_{rnd.randint(0,999):03d}"
|
||||
else: name = f"None_{i:03d}"
|
||||
buckest = ht_delete(buckest, name)
|
||||
end_delete = time.perf_counter()
|
||||
time_delete = end_delete - start_delete
|
||||
|
||||
|
||||
start_list = time.perf_counter()
|
||||
name_list = sort_list(ht_list_all(buckest))
|
||||
#print(*name_list)
|
||||
end_list = time.perf_counter()
|
||||
time_list = end_list - start_list
|
||||
|
||||
return (time_insert, time_find, time_delete, time_list)
|
||||
|
||||
#################################################################################################
|
||||
|
||||
def bst_insert(root, name, phone):
|
||||
|
||||
running = root
|
||||
|
||||
if running is None:
|
||||
root = {'name': name, 'phone': phone, 'left': None, 'right': None}
|
||||
return root
|
||||
while True:
|
||||
node = hash_key(running['name'])
|
||||
sheet = hash_key(name)
|
||||
if node < sheet:
|
||||
if running['right'] is None:
|
||||
running['right'] = {'name': name, 'phone': phone, 'left': None, 'right': None}
|
||||
return root
|
||||
running = running['right']
|
||||
elif node > sheet:
|
||||
if running['left'] is None:
|
||||
running['left'] = {'name': name, 'phone': phone, 'left': None, 'right': None}
|
||||
return root
|
||||
running = running['left']
|
||||
else:
|
||||
running['phone'] = phone
|
||||
return root
|
||||
|
||||
def bst_find(root, name):
|
||||
|
||||
running = root
|
||||
|
||||
while running is not None:
|
||||
node = hash_key(running['name'])
|
||||
sheet = hash_key(name)
|
||||
if name == running['name']:
|
||||
return running['phone']
|
||||
elif node < sheet:
|
||||
running = running['right']
|
||||
else:
|
||||
running = running['left']
|
||||
|
||||
return None
|
||||
|
||||
def bst_list_all(root, name_list = []):
|
||||
if root is None:
|
||||
return
|
||||
name_list.append((root['name'], root['phone']))
|
||||
bst_list_all(root['left'], name_list)
|
||||
bst_list_all(root['right'], name_list)
|
||||
name_list = sort_list(name_list)
|
||||
return name_list
|
||||
|
||||
def bst_delete(root, name):
|
||||
|
||||
if root is None:
|
||||
return None
|
||||
if hash_key(name) < hash_key(root['name']):
|
||||
root['left'] = bst_delete(root['left'], name)
|
||||
elif hash_key(name) > hash_key(root['name']):
|
||||
root['right'] = bst_delete(root['right'], name)
|
||||
else:
|
||||
|
||||
if root['left'] is None and root['right'] is None:
|
||||
return None
|
||||
|
||||
if root['left'] is None:
|
||||
return root['right']
|
||||
if root['right'] is None:
|
||||
return root['left']
|
||||
|
||||
min_node = root['right']
|
||||
while min_node['left'] is not None:
|
||||
min_node = min_node['left']
|
||||
|
||||
root['name'] = min_node['name']
|
||||
root['phone'] = min_node['phone']
|
||||
|
||||
root['right'] = bst_delete(root['right'], min_node['name'])
|
||||
|
||||
return root
|
||||
|
||||
#################################################################################################
|
||||
|
||||
def BinarySearchTree(root, phone_book):
|
||||
|
||||
start_insert = time.perf_counter()
|
||||
for i in range(len(phone_book)):
|
||||
|
||||
root = bst_insert(root, phone_book[i][0], phone_book[i][1])
|
||||
#print(buckest)
|
||||
end_insert = time.perf_counter()
|
||||
time_insert = end_insert - start_insert
|
||||
|
||||
|
||||
start_find = time.perf_counter()
|
||||
for _ in range(100):
|
||||
name = create_name_phone(rnd.randint(0, 999))[0]
|
||||
phone = bst_find(root, name)
|
||||
#print(name, ":", phone)
|
||||
end_find = time.perf_counter()
|
||||
time_find = end_find - start_find
|
||||
|
||||
|
||||
start_delete = time.perf_counter()
|
||||
for i in range(110):
|
||||
if i <= 99: name = f"User_{rnd.randint(0,999):03d}"
|
||||
else: name = f"None_{i:03d}"
|
||||
root = bst_delete(root, name)
|
||||
end_delete = time.perf_counter()
|
||||
time_delete = end_delete - start_delete
|
||||
|
||||
|
||||
start_list = time.perf_counter()
|
||||
name_list = sort_list(bst_list_all(root))
|
||||
#print(*name_list)
|
||||
end_list = time.perf_counter()
|
||||
time_list = end_list - start_list
|
||||
|
||||
return (time_insert, time_find, time_delete, time_list)
|
||||
|
||||
################################################################################################
|
||||
def main():
|
||||
|
||||
phone_book = []
|
||||
for i in range(1000):
|
||||
phone_book.append(create_name_phone(i))
|
||||
for _ in range(9000):
|
||||
phone_book.append(create_name_phone(rnd.randint(0, 999)))
|
||||
|
||||
phone_book_not_sorted = phone_book.copy()
|
||||
rnd.shuffle(phone_book_not_sorted)
|
||||
|
||||
phone_book_sorted = phone_book.copy()
|
||||
phone_book_sorted = sort_list(phone_book_sorted)
|
||||
replay = 10
|
||||
|
||||
|
||||
Time_ll_not_sorted = []
|
||||
Time_ll_sorted = []
|
||||
|
||||
Time_average_ll_not_sorted = {'insert': 0, 'find': 0, 'delete': 0, 'list': 0}
|
||||
Time_average_ll_sorted = {'insert': 0, 'find': 0, 'delete': 0, 'list': 0}
|
||||
|
||||
print("============================================ TESTING LINKEDLIST =====================================\n")
|
||||
print('Not sorted: ')
|
||||
for _ in range(replay):
|
||||
time_ll_not_sorted = LinkedList(None, phone_book_not_sorted)
|
||||
Time_ll_not_sorted.append({'insert': time_ll_not_sorted[0], 'find': time_ll_not_sorted[1], 'delete': time_ll_not_sorted[2], 'list': time_ll_not_sorted[3]})
|
||||
for i, key in enumerate(Time_average_ll_not_sorted):
|
||||
Time_average_ll_not_sorted[key] += time_ll_not_sorted[i]/replay
|
||||
for i in range(replay):
|
||||
print(Time_ll_not_sorted[i])
|
||||
print("Average:", Time_average_ll_not_sorted, "\n\n")
|
||||
|
||||
print('Sorted:')
|
||||
for _ in range(replay):
|
||||
time_ll_sorted = LinkedList(None, phone_book_sorted)
|
||||
Time_ll_sorted.append({'insert': time_ll_sorted[0], 'find': time_ll_sorted[1], 'delete': time_ll_sorted[2], 'list': time_ll_sorted[3]})
|
||||
for i, key in enumerate(Time_average_ll_sorted):
|
||||
Time_average_ll_sorted[key] += time_ll_sorted[i]/replay
|
||||
for i in range(replay):
|
||||
print(Time_ll_not_sorted[i])
|
||||
print("Average:", Time_average_ll_sorted, "\n\n")
|
||||
|
||||
|
||||
|
||||
Time_ht_not_sorted = []
|
||||
Time_ht_sorted = []
|
||||
|
||||
Time_average_ht_not_sorted = {'insert': 0, 'find': 0, 'delete': 0, 'list': 0}
|
||||
Time_average_ht_sorted = {'insert': 0, 'find': 0, 'delete': 0, 'list': 0}
|
||||
|
||||
print("============================================ TESTING HASHTABLE =====================================\n")
|
||||
print('Not sorted: ')
|
||||
for _ in range(replay):
|
||||
time_ht_not_sorted = HashTable([[] for _ in range(100)], phone_book_not_sorted)
|
||||
Time_ht_not_sorted.append({'insert': time_ht_not_sorted[0], 'find': time_ht_not_sorted[1], 'delete': time_ht_not_sorted[2], 'list': time_ht_not_sorted[3]})
|
||||
for i, key in enumerate(Time_average_ht_not_sorted):
|
||||
Time_average_ht_not_sorted[key] += time_ht_not_sorted[i]/replay
|
||||
for i in range(replay):
|
||||
print(Time_ht_not_sorted[i])
|
||||
print(f"Average: {Time_average_ht_not_sorted}\n\n")
|
||||
|
||||
print('Sorted: ')
|
||||
for _ in range(replay):
|
||||
time_ht_sorted = HashTable([[] for _ in range(100)], phone_book_sorted)
|
||||
Time_ht_sorted.append({'insert': time_ht_sorted[0], 'find': time_ht_sorted[1], 'delete': time_ht_sorted[2], 'list': time_ht_sorted[3]})
|
||||
for i, key in enumerate(Time_average_ht_sorted):
|
||||
Time_average_ht_sorted[key] += time_ht_sorted[i]/replay
|
||||
for i in range(replay):
|
||||
print(Time_ht_sorted[i])
|
||||
print(f"Average: {Time_average_ht_sorted}\n\n")
|
||||
|
||||
|
||||
|
||||
Time_bst_not_sorted = []
|
||||
Time_bst_sorted = []
|
||||
|
||||
Time_average_bst_not_sorted = {'insert': 0, 'find': 0, 'delete': 0, 'list': 0}
|
||||
Time_average_bst_sorted = {'insert': 0, 'find': 0, 'delete': 0, 'list': 0}
|
||||
|
||||
print("============================================ TESTING BINARYSEARCHTREE =====================================\n")
|
||||
print('Not sorted: ')
|
||||
for _ in range(replay):
|
||||
time_bst_not_sorted = BinarySearchTree(None, phone_book_not_sorted)
|
||||
Time_bst_not_sorted.append({'insert': time_bst_not_sorted[0], 'find': time_bst_not_sorted[1], 'delete': time_bst_not_sorted[2], 'list': time_bst_not_sorted[3]})
|
||||
for i, key in enumerate(Time_average_bst_not_sorted):
|
||||
Time_average_bst_not_sorted[key] += time_bst_not_sorted[i]/replay
|
||||
for i in range(replay):
|
||||
print(Time_bst_not_sorted[i])
|
||||
print(f"Average: {Time_average_bst_not_sorted}\n\n")
|
||||
|
||||
print('Sorted: ')
|
||||
for _ in range(replay):
|
||||
time_bst_sorted = BinarySearchTree(None, phone_book_sorted)
|
||||
Time_bst_sorted.append({'insert': time_bst_sorted[0], 'find': time_bst_sorted[1], 'delete': time_bst_sorted[2], 'list': time_bst_sorted[3]})
|
||||
for i, key in enumerate(Time_average_bst_sorted):
|
||||
Time_average_bst_sorted[key] += time_bst_sorted[i]/replay
|
||||
for i in range(replay):
|
||||
print(Time_bst_sorted[i])
|
||||
print(f"Average: {Time_average_bst_sorted}\n\n")
|
||||
print("=============================================== END TESTING ================================================")
|
||||
|
||||
results = [["Структура", "Режим", "Операция", "Время(мс)"]]
|
||||
for i in range(replay):
|
||||
results.append(["LinkedList", "Случайный", "вставка", Time_ll_not_sorted[i]["insert"]])
|
||||
results.append(["LinkedList", "Случайный", "поиск", Time_ll_not_sorted[i]["find"]])
|
||||
results.append(["LinkedList", "Случайный", "удаление", Time_ll_not_sorted[i]["delete"]])
|
||||
results.append(["LinkedList", "Случайный", "формирование списка", Time_ll_not_sorted[i]["list"]])
|
||||
|
||||
results.append(["LinkedList", "Упорядоченный", "вставка", Time_ll_sorted[i]["insert"]])
|
||||
results.append(["LinkedList", "Упорядоченный", "поиск", Time_ll_sorted[i]["find"]])
|
||||
results.append(["LinkedList", "Упорядоченный", "удаление", Time_ll_sorted[i]["delete"]])
|
||||
results.append(["LinkedList", "Упорядоченный", "формирование списка", Time_ll_sorted[i]["list"]])
|
||||
|
||||
for i in range(replay):
|
||||
results.append(["HashTable", "Случайный", "вставка", Time_ht_not_sorted[i]["insert"]])
|
||||
results.append(["HashTable", "Случайный", "поиск", Time_ht_not_sorted[i]["find"]])
|
||||
results.append(["HashTable", "Случайный", "удаление", Time_ht_not_sorted[i]["delete"]])
|
||||
results.append(["HashTable", "Случайный", "формирование списка", Time_ht_not_sorted[i]["list"]])
|
||||
|
||||
results.append(["HashTable", "Упорядоченный", "вставка", Time_ht_sorted[i]["insert"]])
|
||||
results.append(["HashTable", "Упорядоченный", "поиск", Time_ht_sorted[i]["find"]])
|
||||
results.append(["HashTable", "Упорядоченный", "удаление", Time_ht_sorted[i]["delete"]])
|
||||
results.append(["HashTable", "Упорядоченный", "формирование списка", Time_ht_sorted[i]["list"]])
|
||||
|
||||
for i in range(replay):
|
||||
results.append(["BinarySearchTree", "Случайный", "вставка", Time_bst_not_sorted[i]["insert"]])
|
||||
results.append(["BinarySearchTree", "Случайный", "поиск", Time_bst_not_sorted[i]["find"]])
|
||||
results.append(["BinarySearchTree", "Случайный", "удаление", Time_bst_not_sorted[i]["delete"]])
|
||||
results.append(["BinarySearchTree", "Случайный", "формирование списка", Time_bst_not_sorted[i]["list"]])
|
||||
|
||||
results.append(["BinarySearchTree", "Упорядоченный", "вставка", Time_bst_sorted[i]["insert"]])
|
||||
results.append(["BinarySearchTree", "Упорядоченный", "поиск", Time_bst_sorted[i]["find"]])
|
||||
results.append(["BinarySearchTree", "Упорядоченный", "удаление", Time_bst_sorted[i]["delete"]])
|
||||
results.append(["BinarySearchTree", "Упорядоченный", "формирование списка", Time_bst_sorted[i]["list"]])
|
||||
|
||||
for i in range(1, len(results) - 1):
|
||||
results[i][3] *= 1000
|
||||
file_insert(results)
|
||||
|
||||
plt.figure(figsize = (16, 9))
|
||||
plt.xlabel("Операция")
|
||||
plt.ylabel("Время мс")
|
||||
|
||||
drow(Time_average_ll_not_sorted, "blue")
|
||||
drow(Time_average_ll_sorted, "green")
|
||||
drow(Time_average_ht_not_sorted, "#FF8800")
|
||||
drow(Time_average_ht_sorted, "#FF0000")
|
||||
drow(Time_average_bst_not_sorted, "#464219")
|
||||
drow(Time_average_bst_sorted, "#FBFF00")
|
||||
|
||||
text = """
|
||||
синий - LinkedList (not sorted) ораньжевый - HashTable (not sorted) коричневый - BST (not sorted)
|
||||
зеленый - LinkedList (sorted) красный - HashTable (sorted) желтый - BST (sorted)
|
||||
"""
|
||||
# plt.subplots_adjust(bottom =0.3)
|
||||
plt.figtext(0.1, 0.02, text, wrap = True, fontsize = 9, va = 'bottom')
|
||||
plt.savefig("time_schedule.png")
|
||||
plt.show()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
||||
|
||||
241
lukovnikovde/docs/data/resalts.csv
Normal file
241
lukovnikovde/docs/data/resalts.csv
Normal file
|
|
@ -0,0 +1,241 @@
|
|||
Структура,Режим,Операция,Время(мс)
|
||||
LinkedList,Случайный,вставка,311.8601000023773
|
||||
LinkedList,Случайный,поиск,3.0993999971542507
|
||||
LinkedList,Случайный,удаление,6.629099996644072
|
||||
LinkedList,Случайный,формирование списка,60.98759999440517
|
||||
LinkedList,Упорядоченный,вставка,332.72419999411795
|
||||
LinkedList,Упорядоченный,поиск,3.1196000054478645
|
||||
LinkedList,Упорядоченный,удаление,5.813899988424964
|
||||
LinkedList,Упорядоченный,формирование списка,39.0969000000041
|
||||
LinkedList,Случайный,вставка,333.36899999994785
|
||||
LinkedList,Случайный,поиск,3.6326999979792163
|
||||
LinkedList,Случайный,удаление,5.94719999935478
|
||||
LinkedList,Случайный,формирование списка,68.81969999813009
|
||||
LinkedList,Упорядоченный,вставка,347.4948999937624
|
||||
LinkedList,Упорядоченный,поиск,3.69440000213217
|
||||
LinkedList,Упорядоченный,удаление,6.888300005812198
|
||||
LinkedList,Упорядоченный,формирование списка,46.8346000125166
|
||||
LinkedList,Случайный,вставка,309.86330000450835
|
||||
LinkedList,Случайный,поиск,2.868099996703677
|
||||
LinkedList,Случайный,удаление,6.037400002242066
|
||||
LinkedList,Случайный,формирование списка,61.938399987411685
|
||||
LinkedList,Упорядоченный,вставка,338.7425999972038
|
||||
LinkedList,Упорядоченный,поиск,3.638499998487532
|
||||
LinkedList,Упорядоченный,удаление,7.441800000378862
|
||||
LinkedList,Упорядоченный,формирование списка,39.537500008009374
|
||||
LinkedList,Случайный,вставка,310.5929000012111
|
||||
LinkedList,Случайный,поиск,3.468300012173131
|
||||
LinkedList,Случайный,удаление,7.5059000082546845
|
||||
LinkedList,Случайный,формирование списка,64.28520000190474
|
||||
LinkedList,Упорядоченный,вставка,335.0771999976132
|
||||
LinkedList,Упорядоченный,поиск,3.0857999954605475
|
||||
LinkedList,Упорядоченный,удаление,6.151499997940846
|
||||
LinkedList,Упорядоченный,формирование списка,38.384100000257604
|
||||
LinkedList,Случайный,вставка,333.7921000056667
|
||||
LinkedList,Случайный,поиск,6.480700001702644
|
||||
LinkedList,Случайный,удаление,8.09099999605678
|
||||
LinkedList,Случайный,формирование списка,63.44879999232944
|
||||
LinkedList,Упорядоченный,вставка,312.329199994565
|
||||
LinkedList,Упорядоченный,поиск,3.115400002570823
|
||||
LinkedList,Упорядоченный,удаление,5.880099997739308
|
||||
LinkedList,Упорядоченный,формирование списка,39.14569999324158
|
||||
LinkedList,Случайный,вставка,306.0167000076035
|
||||
LinkedList,Случайный,поиск,3.3414000063203275
|
||||
LinkedList,Случайный,удаление,6.772799999453127
|
||||
LinkedList,Случайный,формирование списка,58.58910000824835
|
||||
LinkedList,Упорядоченный,вставка,317.93599999218713
|
||||
LinkedList,Упорядоченный,поиск,4.178699993644841
|
||||
LinkedList,Упорядоченный,удаление,6.598799998755567
|
||||
LinkedList,Упорядоченный,формирование списка,43.91350000514649
|
||||
LinkedList,Случайный,вставка,326.0805000027176
|
||||
LinkedList,Случайный,поиск,3.511100003379397
|
||||
LinkedList,Случайный,удаление,7.0478000125149265
|
||||
LinkedList,Случайный,формирование списка,65.27820001065265
|
||||
LinkedList,Упорядоченный,вставка,342.3164999985602
|
||||
LinkedList,Упорядоченный,поиск,2.997699994011782
|
||||
LinkedList,Упорядоченный,удаление,6.1990999965928495
|
||||
LinkedList,Упорядоченный,формирование списка,38.459399991552345
|
||||
LinkedList,Случайный,вставка,352.4922000069637
|
||||
LinkedList,Случайный,поиск,3.4684999991441146
|
||||
LinkedList,Случайный,удаление,6.042299995897338
|
||||
LinkedList,Случайный,формирование списка,58.957499990356155
|
||||
LinkedList,Упорядоченный,вставка,336.49819999118336
|
||||
LinkedList,Упорядоченный,поиск,4.811599996173754
|
||||
LinkedList,Упорядоченный,удаление,7.25540000712499
|
||||
LinkedList,Упорядоченный,формирование списка,42.60240000439808
|
||||
LinkedList,Случайный,вставка,335.7185000058962
|
||||
LinkedList,Случайный,поиск,3.1072999991010875
|
||||
LinkedList,Случайный,удаление,7.647199992788956
|
||||
LinkedList,Случайный,формирование списка,61.90960000094492
|
||||
LinkedList,Упорядоченный,вставка,348.60630000184756
|
||||
LinkedList,Упорядоченный,поиск,3.2524999987799674
|
||||
LinkedList,Упорядоченный,удаление,7.037800009129569
|
||||
LinkedList,Упорядоченный,формирование списка,45.27720001351554
|
||||
LinkedList,Случайный,вставка,349.1418000048725
|
||||
LinkedList,Случайный,поиск,3.576899995096028
|
||||
LinkedList,Случайный,удаление,6.985800006077625
|
||||
LinkedList,Случайный,формирование списка,61.900600005174056
|
||||
LinkedList,Упорядоченный,вставка,341.29359999496955
|
||||
LinkedList,Упорядоченный,поиск,3.3715000026859343
|
||||
LinkedList,Упорядоченный,удаление,5.9412999980850145
|
||||
LinkedList,Упорядоченный,формирование списка,39.60160000133328
|
||||
HashTable,Случайный,вставка,36.995000002207235
|
||||
HashTable,Случайный,поиск,0.5348999984562397
|
||||
HashTable,Случайный,удаление,0.5553000082727522
|
||||
HashTable,Случайный,формирование списка,92.14980000979267
|
||||
HashTable,Упорядоченный,вставка,38.21459999016952
|
||||
HashTable,Упорядоченный,поиск,0.5354000022634864
|
||||
HashTable,Упорядоченный,удаление,0.5906000005779788
|
||||
HashTable,Упорядоченный,формирование списка,88.85620000364725
|
||||
HashTable,Случайный,вставка,32.90600000764243
|
||||
HashTable,Случайный,поиск,0.575300000491552
|
||||
HashTable,Случайный,удаление,0.5553999944822863
|
||||
HashTable,Случайный,формирование списка,88.85440000449307
|
||||
HashTable,Упорядоченный,вставка,34.381400007987395
|
||||
HashTable,Упорядоченный,поиск,0.5379000067478046
|
||||
HashTable,Упорядоченный,удаление,0.5721999914385378
|
||||
HashTable,Упорядоченный,формирование списка,99.7819000040181
|
||||
HashTable,Случайный,вставка,32.61900000507012
|
||||
HashTable,Случайный,поиск,0.5061999981990084
|
||||
HashTable,Случайный,удаление,0.5795999895781279
|
||||
HashTable,Случайный,формирование списка,99.24530000716913
|
||||
HashTable,Упорядоченный,вставка,33.648600001470186
|
||||
HashTable,Упорядоченный,поиск,0.5078999965917319
|
||||
HashTable,Упорядоченный,удаление,0.5576999974437058
|
||||
HashTable,Упорядоченный,формирование списка,95.2331000007689
|
||||
HashTable,Случайный,вставка,35.18770000664517
|
||||
HashTable,Случайный,поиск,0.5262999911792576
|
||||
HashTable,Случайный,удаление,0.5527000030269846
|
||||
HashTable,Случайный,формирование списка,94.51690000423696
|
||||
HashTable,Упорядоченный,вставка,32.084099992061965
|
||||
HashTable,Упорядоченный,поиск,0.5337000038707629
|
||||
HashTable,Упорядоченный,удаление,0.5661999894073233
|
||||
HashTable,Упорядоченный,формирование списка,92.34840000863187
|
||||
HashTable,Случайный,вставка,32.56010000768583
|
||||
HashTable,Случайный,поиск,0.8410000009462237
|
||||
HashTable,Случайный,удаление,0.9258000063709915
|
||||
HashTable,Случайный,формирование списка,100.2130999986548
|
||||
HashTable,Упорядоченный,вставка,35.40219999558758
|
||||
HashTable,Упорядоченный,поиск,0.5304999940562993
|
||||
HashTable,Упорядоченный,удаление,0.5839999939780682
|
||||
HashTable,Упорядоченный,формирование списка,89.48920000693761
|
||||
HashTable,Случайный,вставка,32.839099992997944
|
||||
HashTable,Случайный,поиск,0.5260000034468248
|
||||
HashTable,Случайный,удаление,0.5661000031977892
|
||||
HashTable,Случайный,формирование списка,94.66200000315439
|
||||
HashTable,Упорядоченный,вставка,33.16459999768995
|
||||
HashTable,Упорядоченный,поиск,0.5823999963467941
|
||||
HashTable,Упорядоченный,удаление,0.6093999982113019
|
||||
HashTable,Упорядоченный,формирование списка,96.02349999477156
|
||||
HashTable,Случайный,вставка,34.824300004402176
|
||||
HashTable,Случайный,поиск,0.6218999915290624
|
||||
HashTable,Случайный,удаление,0.6026000046404079
|
||||
HashTable,Случайный,формирование списка,116.66119999426883
|
||||
HashTable,Упорядоченный,вставка,37.25999999733176
|
||||
HashTable,Упорядоченный,поиск,0.5453000048873946
|
||||
HashTable,Упорядоченный,удаление,0.5864999984623864
|
||||
HashTable,Упорядоченный,формирование списка,89.71509999537375
|
||||
HashTable,Случайный,вставка,40.50240000651684
|
||||
HashTable,Случайный,поиск,0.8645000052638352
|
||||
HashTable,Случайный,удаление,0.90230000205338
|
||||
HashTable,Случайный,формирование списка,90.88490001158789
|
||||
HashTable,Упорядоченный,вставка,31.434000004082918
|
||||
HashTable,Упорядоченный,поиск,0.5355000030249357
|
||||
HashTable,Упорядоченный,удаление,0.6349000032059848
|
||||
HashTable,Упорядоченный,формирование списка,87.44309999747202
|
||||
HashTable,Случайный,вставка,33.64940000756178
|
||||
HashTable,Случайный,поиск,0.8600000001024455
|
||||
HashTable,Случайный,удаление,0.7679999980609864
|
||||
HashTable,Случайный,формирование списка,94.88509999937378
|
||||
HashTable,Упорядоченный,вставка,31.084599992027506
|
||||
HashTable,Упорядоченный,поиск,0.5097999965073541
|
||||
HashTable,Упорядоченный,удаление,0.5652999971061945
|
||||
HashTable,Упорядоченный,формирование списка,89.97830000589602
|
||||
HashTable,Случайный,вставка,34.94059998774901
|
||||
HashTable,Случайный,поиск,0.5363999953260645
|
||||
HashTable,Случайный,удаление,0.9123000054387376
|
||||
HashTable,Случайный,формирование списка,96.32379999675322
|
||||
HashTable,Упорядоченный,вставка,32.151399995200336
|
||||
HashTable,Упорядоченный,поиск,0.5317000031936914
|
||||
HashTable,Упорядоченный,удаление,0.5829000001540408
|
||||
HashTable,Упорядоченный,формирование списка,93.51580000657123
|
||||
BinarySearchTree,Случайный,вставка,102.40699999849312
|
||||
BinarySearchTree,Случайный,поиск,1.3612000038847327
|
||||
BinarySearchTree,Случайный,удаление,1.1245999921811745
|
||||
BinarySearchTree,Случайный,формирование списка,0.023999993572942913
|
||||
BinarySearchTree,Упорядоченный,вставка,316.0647000040626
|
||||
BinarySearchTree,Упорядоченный,поиск,3.1904000061331317
|
||||
BinarySearchTree,Упорядоченный,удаление,3.3792000031098723
|
||||
BinarySearchTree,Упорядоченный,формирование списка,1.6973000019788742
|
||||
BinarySearchTree,Случайный,вставка,91.03359999426175
|
||||
BinarySearchTree,Случайный,поиск,1.371799997286871
|
||||
BinarySearchTree,Случайный,удаление,1.2165999942226335
|
||||
BinarySearchTree,Случайный,формирование списка,0.024100008886307478
|
||||
BinarySearchTree,Упорядоченный,вставка,347.1241000079317
|
||||
BinarySearchTree,Упорядоченный,поиск,4.274999999324791
|
||||
BinarySearchTree,Упорядоченный,удаление,2.4944999895524234
|
||||
BinarySearchTree,Упорядоченный,формирование списка,0.8478999952785671
|
||||
BinarySearchTree,Случайный,вставка,92.06209999683779
|
||||
BinarySearchTree,Случайный,поиск,1.3248000032035634
|
||||
BinarySearchTree,Случайный,удаление,1.3013999996474013
|
||||
BinarySearchTree,Случайный,формирование списка,0.05079999391455203
|
||||
BinarySearchTree,Упорядоченный,вставка,332.4990999972215
|
||||
BinarySearchTree,Упорядоченный,поиск,3.3688999974401668
|
||||
BinarySearchTree,Упорядоченный,удаление,3.079799993429333
|
||||
BinarySearchTree,Упорядоченный,формирование списка,1.447100003133528
|
||||
BinarySearchTree,Случайный,вставка,94.18839999125339
|
||||
BinarySearchTree,Случайный,поиск,2.256499996292405
|
||||
BinarySearchTree,Случайный,удаление,1.2769000022672117
|
||||
BinarySearchTree,Случайный,формирование списка,0.12320000678300858
|
||||
BinarySearchTree,Упорядоченный,вставка,335.0482999958331
|
||||
BinarySearchTree,Упорядоченный,поиск,4.005399998277426
|
||||
BinarySearchTree,Упорядоченный,удаление,2.4089999933494255
|
||||
BinarySearchTree,Упорядоченный,формирование списка,1.9695999944815412
|
||||
BinarySearchTree,Случайный,вставка,101.12979999394156
|
||||
BinarySearchTree,Случайный,поиск,1.4136999961920083
|
||||
BinarySearchTree,Случайный,удаление,1.236700001754798
|
||||
BinarySearchTree,Случайный,формирование списка,0.27800000680144876
|
||||
BinarySearchTree,Упорядоченный,вставка,333.7679999967804
|
||||
BinarySearchTree,Упорядоченный,поиск,4.243799994583242
|
||||
BinarySearchTree,Упорядоченный,удаление,3.14470000739675
|
||||
BinarySearchTree,Упорядоченный,формирование списка,2.2033999994164333
|
||||
BinarySearchTree,Случайный,вставка,101.16009999183007
|
||||
BinarySearchTree,Случайный,поиск,2.0936999935656786
|
||||
BinarySearchTree,Случайный,удаление,2.1564000053331256
|
||||
BinarySearchTree,Случайный,формирование списка,0.4315999976824969
|
||||
BinarySearchTree,Упорядоченный,вставка,329.3697999906726
|
||||
BinarySearchTree,Упорядоченный,поиск,3.3687999966787174
|
||||
BinarySearchTree,Упорядоченный,удаление,2.4997000000439584
|
||||
BinarySearchTree,Упорядоченный,формирование списка,1.727099996060133
|
||||
BinarySearchTree,Случайный,вставка,99.00390000257175
|
||||
BinarySearchTree,Случайный,поиск,1.3448000099742785
|
||||
BinarySearchTree,Случайный,удаление,1.1521000124048442
|
||||
BinarySearchTree,Случайный,формирование списка,0.5104000010760501
|
||||
BinarySearchTree,Упорядоченный,вставка,332.7874999959022
|
||||
BinarySearchTree,Упорядоченный,поиск,4.331000003730878
|
||||
BinarySearchTree,Упорядоченный,удаление,2.853600002708845
|
||||
BinarySearchTree,Упорядоченный,формирование списка,3.774099997826852
|
||||
BinarySearchTree,Случайный,вставка,94.74190000037197
|
||||
BinarySearchTree,Случайный,поиск,1.352399995084852
|
||||
BinarySearchTree,Случайный,удаление,1.2611999991349876
|
||||
BinarySearchTree,Случайный,формирование списка,0.8051000040723011
|
||||
BinarySearchTree,Упорядоченный,вставка,338.8535999984015
|
||||
BinarySearchTree,Упорядоченный,поиск,3.4047999943140894
|
||||
BinarySearchTree,Упорядоченный,удаление,2.4553999974159524
|
||||
BinarySearchTree,Упорядоченный,формирование списка,3.5234999959357083
|
||||
BinarySearchTree,Случайный,вставка,91.76830000069458
|
||||
BinarySearchTree,Случайный,поиск,1.3421000039670616
|
||||
BinarySearchTree,Случайный,удаление,1.4171999937389046
|
||||
BinarySearchTree,Случайный,формирование списка,1.0964999964926392
|
||||
BinarySearchTree,Упорядоченный,вставка,332.47900000424124
|
||||
BinarySearchTree,Упорядоченный,поиск,3.157399987685494
|
||||
BinarySearchTree,Упорядоченный,удаление,6.078400008846074
|
||||
BinarySearchTree,Упорядоченный,формирование списка,4.061100000399165
|
||||
BinarySearchTree,Случайный,вставка,90.57990000292193
|
||||
BinarySearchTree,Случайный,поиск,1.302800010307692
|
||||
BinarySearchTree,Случайный,удаление,1.117399995564483
|
||||
BinarySearchTree,Случайный,формирование списка,1.220699996338226
|
||||
BinarySearchTree,Упорядоченный,вставка,326.30869999411516
|
||||
BinarySearchTree,Упорядоченный,поиск,3.144999995129183
|
||||
BinarySearchTree,Упорядоченный,удаление,2.4704999959794804
|
||||
BinarySearchTree,Упорядоченный,формирование списка,0.0027224000077694654
|
||||
|
BIN
lukovnikovde/docs/data/time_schedule.png
Normal file
BIN
lukovnikovde/docs/data/time_schedule.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
Loading…
Reference in New Issue
Block a user