Я хочу проверить различные алгоритмы сортировки и их скорость.Все функции алгоритма выглядят так:
def quicksort(arg1):
...
return result
def heapsort(arg1):
...
return result
, где аргумент представляет собой список чисел.Я хочу рассчитать эти алгоритмы для разных входных длин, чтобы получить график.Поэтому я написал тестовую функцию, которая получает алгоритм в качестве параметра и тестирует этот алгоритм с различной длиной ввода.
def measure_algorithm(tests, algorithm):
results = []
for i in range(len(tests)):
result = %timeit -n 100 -r 3 -o (algorithm(tests[i]))
results.append(result.best)
return results
Код, вызывающий эту функцию, выглядит примерно так:
unsorted_list = [1, 3, 2, 9, 7, 5, 0, ...]
lengths = [10, 50, 100, 500, ...]
tests = []
for i in range(len(lengths)):
tests.append(unsorted_list[:lengths[i]])
heapsort_times = measure_algorithm(tests, heapsort)
quicksort_times = measure_algorithm(tests, quicksort)
...
Но теперь я получаю
NameError: name 'algorithm' is not defined
Я работаю с Python 3 и IPythonЗаписная книжка.
Что я делаю не так?