所以我尝试在Python中使用timeit/Timer函数来计时bruteforce aglorithm和更高效的nlogn版本之间的差异。我的问题是时间问题。你知道吗
from timeit import Timer
import timeit
def BruteForce(A, u):
for z in A:
if u-z in A:
return u, z
return False
def BinarySearchAlgo(A, u):
A.sort()
for z in A:
if BinarySearch(A, u-z) is True:
return u, z
return False
def BinarySearch(list, item):
if len(list)==0:
return False
else:
midpoint = len(list)//2
if list[midpoint] == item:
return True
elif item < list[midpoint]:
return BinarySearch(list[:midpoint], item)
else:
return BinarySearch(list[midpoint+1:], item)
def tests():
TestFiles = ['listNumbers-10.txt', 'listNumbers2-10.txt','listNumbers- 100.txt','listNumbers2-100.txt','listNumbers-1000.txt','listNumbers2- 1000.txt','listNumbers-10000.txt','listNumbers2-10000.txt','listNumbers- 100000.txt','listNumbers2-100000.txt','listNumbers-1000000.txt','listNumbers2- 1000000.txt']
for File in TestFiles:
results = []
print("The following are timing tests for the file: ", File)
with open(File) as inputfile:
for line in inputfile:
results.append(int(line.strip()))
TestNumbers = [len(results)%2,len(results)%5,len(results)%13,len(results)%99, len(results)%209, len(results)%317, len(results)%464, len(results)%892, len(results)%777]
for n in TestNumbers:
BruteForceTime = Timer("BruteForce(results, n)", "from __main__ import BruteForce").timeit()
BinarySearchTime = Timer("BinarySearchAlgo(results, n)", "from __main__ import BinarySearchAlgo").timeit()
print("Test Number = ", n, "Brute Force Algo time = ", BruteForceTime, "Binary Search Algo time = ", BinarySearchTime)
在下面的两行中,每当我调用tests()函数时,我都会得到一个错误,即没有定义结果和n。我的问题是如何将它们导入到计时器参数中,以便定义它们。你知道吗
BruteForceTime = Timer("BruteForce(results, n)", "from __main__ import BruteForce").timeit()
BinarySearchTime = Timer("BinarySearchAlgo(results, n)", "from __main__ import BinarySearchAlgo").timeit()
提前谢谢你的帮助
在表达式中使用值而不是变量:
相关问题 更多 >
编程相关推荐