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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章