def linsearch_and_print(filename, key): file = open(filename, 'r') tch_list = [] for line in file: tch_list.append(teacher(*line.replace('\n', '').split(';'))) file2 = open('Linsearch_result.txt', 'w') keys = linear_search(tch_list, key) for i in keys: file2.write(str(tch_list[i]) + '\n') file2.close()
def make(db_file_name, elements_quantity, structure_scheme, structure_data, key): results = { 'linear': [], 'binary+sort': [], 'binaryinsorted': [], 'multimap': [] } for count in elements_quantity: generate(db_file_name, count, structure_scheme, structure_data) print('{} elements '.format(count)) file = open(db_file_name, 'r') tch_list = [] for line in file: tch_list.append(teacher(*line.replace('\n', '').split(';'))) print("Linear search start") tb = time.time() linear_search(tch_list, key) ta = time.time() results['linear'].append((count, ta - tb)) print("Binary search with merge sort start") ta = time.time() bin_search(merge_sort(tch_list), 0, len(tch_list), key) ta = time.time() results['binary+sort'].append((count, ta - tb)) print("Binary search in sorted array start") tch_list_copy = tch_list.copy() tch_list_copy = merge_sort(tch_list_copy) tb = time.time() bin_search(tch_list_copy, 0, len(tch_list_copy), key) ta = time.time() results['binaryinsorted'].append((count, ta - tb)) del tch_list_copy print("Search in multimap<key, obj> started") multimap = multimap_creation(tch_list) tb = time.time() multimap['КБ'] ta = time.time() results['multimap'].append((count, ta - tb)) del tch_list print('\n') xlist = elements_quantity ylist1 = [el[1] for el in results['linear']] ylist2 = [el[1] for el in results['binary+sort']] ylist3 = [el[1] for el in results['binaryinsorted']] ylist4 = [el[1] for el in results['multimap']] plt.plot(xlist, ylist1, label='Линейный поиск') plt.plot(xlist, ylist2, label='Бинарный + сортировка') plt.plot(xlist, ylist3, label='Бинарный') plt.plot(xlist, ylist4, label='multimap') pylab.title( 'Сравнение линейного, бинарных поисков, и поиска в асс. массиве') pylab.xlabel('Количество объектов') pylab.ylabel('Время на поиск') pylab.legend(title='Легенда') print("Linear") for element in results['linear']: print(str(element[0]) + ';' + str(element[1])) print('\n') print("Bin + merge sort") for element in results['binary+sort']: print(str(element[0]) + ';' + str(element[1])) print('\n') print("Bin") for element in results['binaryinsorted']: print(str(element[0]) + ';' + str(element[1])) print('\n') print("Mult") for element in results['multimap']: print(str(element[0]) + ';' + str(element[1])) print('\n') pylab.show()
def make(db_file_name, count_range, structure_scheme, structure_data): results = {'quick': [], 'bubble': [], 'merge': []} for count in count_range: print('{} elements '.format(count)) #Генерируем базу данных generate(db_file_name, count, structure_scheme, structure_data) #Извлекаем данные из файла в массив file = open(db_file_name, 'r') tch_list = [] for line in file: tch_list.append(teacher(*line.replace('\n', '').split(';'))) print('bubble sort start') tch_list_sorted = tch_list.copy() tb = time.time() # запускаем счетчик времени bubble_sort(tch_list_sorted) # выполняем сортировку пузырьком ta = time.time() results['bubble'].append((count, ta - tb)) del tch_list_sorted print('quick sort start') tch_list_sorted = tch_list.copy() tb = time.time() # запускаем счетчик времени quick_sort(tch_list_sorted) # выполняем быструю сортировку ta = time.time() results['quick'].append((count, ta - tb)) del tch_list_sorted print('merge sort start') tch_list_sorted = tch_list.copy() tb = time.time() # запускаем счетчик времени merge_sort(tch_list_sorted) # выполняем сортировку слиянием ta = time.time() results['merge'].append((count, ta - tb)) print('\n') del tch_list_sorted del tch_list #Построение графиков xlist = count_range ylist1 = [el[1] for el in results['bubble']] ylist2 = [el[1] for el in results['quick']] ylist3 = [el[1] for el in results['merge']] plt.loglog(xlist, ylist1, label='Сортировка пузырьком') plt.loglog(xlist, ylist2, label='Быстрая') plt.loglog(xlist, ylist3, label='Сортировка слиянием') pylab.title('Сравнение быстрой, пузырьковой и сортировки слиянием') pylab.xlabel('Количество объектов') pylab.ylabel('Время на сортировку') pylab.legend(title='Легенда') #Вывод количества элементов, и времени сортировки print("Bubble") for element in results['bubble']: print(str(element[0]) + ';' + str(element[1])) print('\n') print("Quick") for element in results['quick']: print(str(element[0]) + ';' + str(element[1])) print('\n') print("Merge") for element in results['merge']: print(str(element[0]) + ';' + str(element[1])) print('\n') pylab.show()
def print_merge_sort(file_name): file = open(file_name, 'r') tch_list = [] for line in file: tch_list.append(teacher(*line.replace('\n', '').split(';'))) print(merge_sort(tch_list))