1. 程式人生 > >Python 3 二分查找算法實現

Python 3 二分查找算法實現

print 復雜 list 時間 val war 查找算法 nbsp form

import time

def cal_time(func):
def wrapper(*args,**kwargs):
t1=time.time()
x=func(*args,**kwargs)
t2=time.time()
t=t2-t1
print("It costs:",t2-t1)
return x
return wrapper
#pprint("It Costs {0}:".format(t)


@cal_time
def bin_seach(data_set,value):
low =0
high = len(data_set) -1
while low<=high:
mid=(low+high)//2
if data_set[mid]==value:
return mid
elif data_set[mid]>value:
high=mid-1
else:
low=mid+1
return


data=list(range(109))

bin_seach(data,3)

 

時間復雜度:用來評估算法運行效率的一個東西,即 (單位)!

一般來說,時間復雜度高的算法比復雜度低的算法慢。

O(1)<O(logn)<O(n)

效率最好為O(1),其他遞減次之。

簡而言之,幾層循壞,就是O(log2 n),

while n>1:

  print (n)

  n=n//2

  

若n=64 ,則復雜度為:O(log2 64)=6

Python 3 二分查找算法實現