Untitled
unknown
plain_text
5 months ago
2.1 kB
3
Indexable
import time import random import matplotlib.pyplot as plt from sorting import bubble_sort, quick_sort, insertion_sort def measure_time(function, arr): start = time.time() function(arr.copy()) end = time.time() return end - start def generate_arrays(size, case_type): if case_type == "best": arr = sorted(range(size)) elif case_type == "worst": arr = sorted(range(size), reverse=True) else: # average case arr = random.sample(range(size * 10), size) return arr def experiment(algorithm, min_size, max_size, num_repetitions): results = {"average": [], "best": [], "worst": []} for size in range(min_size, max_size + 1, 10): # for case in results.keys(): total_time = 0 for _ in range(num_repetitions): arr = generate_arrays(size, case) total_time += measure_time(algorithm, arr) average_time = total_time / num_repetitions results[case].append(average_time) return results def plot_results(algorithm_name, results, min_size, max_size): sizes = list(range(min_size, max_size + 1, 10)) plt.figure() plt.plot(sizes, results["average"], label=f"{algorithm_name} (průměr)", marker='o') plt.plot(sizes, results["best"], label=f"{algorithm_name} (nejlepší)", marker='o') plt.plot(sizes, results["worst"], label=f"{algorithm_name} (nejhorší)", marker='o') plt.xlabel("Velikost pole") plt.ylabel("Čas (sekundy)") plt.title(f"Čas běhu {algorithm_name}") plt.legend() plt.grid(True, linestyle='--', linewidth=0.5) plt.show() min_size = 10 max_size = 1000 num_repetitions = 15 algorithms = [bubble_sort, insertion_sort, quick_sort] # Run the experiment and plot results for each algorithm for algorithm in algorithms: algorithm_name = algorithm.__name__.replace("_", " ").title() results = experiment(algorithm, min_size, max_size, num_repetitions) plot_results(algorithm_name, results, min_size, max_size)
Editor is loading...
Leave a Comment