Untitled
unknown
plain_text
a year ago
2.1 kB
7
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