py计算程序运行时间-简易版
import time
import datetime
# 测试函数运行时间
def cal_time(fn):
"""计算性能的修饰器"""
def wrapper(*args,**kwargs):
starTime = time.time()
f = fn(*args,**kwargs)
endTime = time.time()
print('%s() runtime:%s ms' % (fn.__name__, 1000*(endTime - starTime)))
return f
return wrapper
@cal_time
def test():
print("开始计算程序运行时间-----------")
for i in range(1000000):
i = i +1
if __name__ == "__main__":
test()
调用方法:
from cal_time2 import calculate_function_run_time_ms
from cal_time2 import calculate_function_run_time
from cal_time import cal_time
'''
查找:在一些数据元素中,通过一定的方法找出与关键字相同元素的过程,
列表查找:从列表中查找指定元素
输入:列表、待查找元素
输出:元素下标(未找到元素时一般返回None或-1)
内置列表查找函数:index()
'''
# 顺序查找: 线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表的最后一个元素
# 时间复杂度 O(n) n---列表的长度 循环过程中无减半
#@calculate_function_run_time
@cal_time
def linear_search(li,val): # li 列表 val 待查找元素
for ind,v in enumerate(li):
if v == val:
return ind
else:
return None
# 二分查找 : 折半查找,从有序列表中的初始候选区li[O:n]开始,通过对待查找的值与候选区中间的值的比较,
# 可以使候选区少一半
# li[1,2,3,4,5,6,7,8,9]
#@calculate_function_run_time_ms
@cal_time
def binary_search(li,val):
left = 0
right = len(li) - 1
while left <= right:# 筛选候选区值
mid = (left + right) // 2
if li[mid] == val:
return mid
elif li[mid] > val:#待查找值在mid的左侧
right = mid - 1
else:# li[mid] 值小于val 意味着带查找的值在mid右侧
left = mid + 1
else:
return None
#li = [1,2,3,4,5,6,7,8,9]
li = list(range(100000000))
linear_search(li,3888)
binary_search(li,3888)