- 推荐自己的专栏:分享一些Python案例,将所学用出来
一:算法时间复杂度分析函数的设计
- 程序的运行时间长度与算法的设计和所求解的问题的规模有关。
- 当输入大小(即问题规模)增大时,程序的运行时间递增比例,即是算法的时间复杂度。
设计思路如下:
- 定义函数buildData(n),构造并返回规模为n的测试输入数据。例如,排序随机n个数的列表。
def buildData(n):
"""构造测试规模为n的输入数据,对于排序,随机n个数的列表"""
data = [random.randrange(n) for i in range(n)]
return data
- 定义函数timing(f, data), 返回调用f(data)的运行时间。
def timing(f, data):
"""测量函数调用f(data)的运行时间分析"""
start = time.time() #记录开始时间
f(data) #运行f(data)
end = time.time() #记录结束时间
return end - start #返回执行时间
- 定义函数timingAnalysis(f, m1, m2, runs, buildData), 测量并输出函数 f 在不同输入规模: 10m1、10m1+1、 …、10m2 情况下运行runs次的平均时间。
函数调用buildData(n)规模为n的数据data,然后调用timing(f, data) 测量函数的运行时间。
def timingAnalysis(f,m1, m2, runs, buildData) :
"""输出函数f在不同输入规模: 10**m1,.... ,10**m2运行runs次的时间"""
for n in [10**i for i in range(m1, m2+1)