LeetCode经常需要优化时间复杂度,在互联网面试的过程中也经常被问到。看完视频清华计算机博士带你学习Python算法+数据结构之后,感觉以下几点讲的挺好的,故记录下:
原因:强调的是大概的时间,不是精确的时间
代码感受一下:
在同一个工程文件下创建两个py文件,文件名分别为:cal_time.py、main.py,比较线性查找与二分查找的时间复杂度:
main.py
from cal_time import *
@cal_time
def Linera_search(nums, value):
for index, num in enumerate(nums):
if num == value:
return index
else:
return None
@cal_time
def binary_search(nums, value):
left = 0
right = len(nums)-1
while left <= right:
mid = (left + right)//2
if value == nums[mid]:
return mid
elif value > nums[mid]:
left = mid + 1
elif value < nums[mid]:
right = mid - 1
else:
return None
nums = list(range(100000))
value = 3000
Linera_search(nums, value)
binary_search(nums, value)
cal_time.py
import time
def cal_time(func):
def wrapper(*args, **kwargs):
t1 = time.time()
result = func(*args, **kwargs)
t2 = time.time()
print("%s running time:%s secs." %(func.__name__, t2 - t1))
return result
return wrapper