我想衡量选择排序的运行时间
<Window ....
<Window.Clip>
<RectangleGeometry Rect="0,0,857,483" RadiusX="25" RadiusY="25"/>
</Window.Clip>
</Window>
但是我一直在不断遇到NameErrors,尤其是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)
。如何做到这一点并确保name 'arr' is not defined
不会在已经排序的列表上运行该函数,并且python缓存也不会影响它?
答案 0 :(得分:0)
您可以使用像这样的functools
import functools
t = timeit.Timer(functools.partial(selection_sort, arr))
print (t.timeit(5))