Скачиваний:
14
Добавлен:
10.11.2023
Размер:
2.17 Кб
Скачать
import random
import timeit

# Генерация случайного массива
def generate_random_array(size):
return [random.randint(1, 1000) for _ in range(size)]

# Турнирный метод сортировки
def tournament_sort(arr):
def tournament(arr):
n = len(arr)
if n == 1:
return arr[0]
winners = []
for i in range(0, n, 2):
if i == n - 1:
winners.append(arr[i])
else:
winners.append(min(arr[i], arr[i + 1]))
return tournament(winners)

sorted_array = []
while arr:
min_element = tournament(arr)
sorted_array.append(min_element)
arr.remove(min_element)
return sorted_array

# Быстрая сортировка
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[random.randint(0, len(arr) - 1)]
less = [x for x in arr if x < pivot]
equal = [x for x in arr if x == pivot]
greater = [x for x in arr if x > pivot]
return quick_sort(less) + equal + quick_sort(greater)

# Сравнение времени выполнения
array_size = 1000 # Пример размера массива

# Генерация случайного массива
array = generate_random_array(array_size)

# Время работы турнирной сортировки
tournament_sort_time = timeit.timeit(lambda: tournament_sort(array.copy()), number=100)

# Время работы быстрой сортировки
quick_sort_time = timeit.timeit(lambda: quick_sort(array.copy()), number=100)

# Время работы встроенной функции сортировки
python_sort_time = timeit.timeit(lambda: sorted(array.copy()), number=100)

print(f"Время работы турнирной сортировки: {tournament_sort_time:.6f} секунд")
print(f"Время работы быстрой сортировки: {quick_sort_time:.6f} секунд")
print(f"Время работы встроенной функции сортировки: {python_sort_time:.6f} секунд")
Соседние файлы в папке Лабораторные 1-5 для Вариант 19