我想测量选择排序的运行时间。
def selection_sort(arr):
for i in range(len(arr)):
least_idx = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[least_idx]:
least_idx = j
arr[least_idx], arr[i] = arr[i], arr[least_idx]
if __name__ == "__main__":
import timeit
import random
n = 7
arr = random.sample(range(2**n), 2**n)
timeit.timeit("selection_sort(arr)", "from __main__ import selection_sort", number=5)但我经常收到NameErrors,特别是name 'arr' is not defined。如何做到这一点,并确保number=5不会在已经排序的列表上运行函数,python缓存也不会影响它?
发布于 2020-09-27 21:34:41
您可以像这样使用functools
import functools
t = timeit.Timer(functools.partial(selection_sort, arr))
print (t.timeit(5))https://stackoverflow.com/questions/64088897
复制相似问题