python时间分析,python中的时间分析

import math

import time

import random

def sequential_search(key,sorted_list):

for element in sorted_list:

if element==key:

return True

else :

return False

def binary_search(key,sorted_list):

l=0

r=len(sorted_list)-1

while l<=r:

m=int(math.floor((l+r)/2))

if key==sorted_list[m]:

return m

elif key

r=m-1

else:

l=m+1

def ternary_search(key,sorted_list):

length = len(sorted_list)

left = 0

right = length

index = 0

x = True

while x and left <= right:

#focal = (high + low) //3

if left == right:

#check similarity between values and key

return left

elif right - left > 0:

index1 = ((right+2*(left))//3)

index2 = ((2*(right)+left)//3)

if sorted_list[index1] == key:

return index1

elif sorted_list[index2] == key:

return index2

else:

if key

right = index1 - 1

elif key > sorted_list[index1] and key

right = index2 - 1

left = index1 - 1

elif key > sorted_list[index2]:

left = index2+1

return index

def interpolation_search(key, sorted_list):

low = 0

high = len(sorted_list) - 1

while sorted_list[low] <= key and sorted_list[high] >= key:

mid = low + ((key - sorted_list[low]) * (high - low)) \

/ (sorted_list[high] - sorted_list[low])

# out of range is possible

if sorted_list[mid] < key:

low = mid + 1

elif sorted_list[mid] < key:

high = mid - 1

else:

return mid

if sorted_list[low] == key:

return low

return None

def run_experiment():

sorted_list=random.sample(range(1000000), 1000)

sorted_list.sort()

key=random.randint(0,1000001)

key=1000001

time_ss=time.time()

sequential_search(key,sorted_list)

time_ss_end=time.time()

print time_ss_end-time_ss

time_bs=time.time()

binary_search(key,sorted_list)

print time.time()-time_bs

time_ts=time.time()

ternary_search(key,sorted_list)

print time.time()-time_ts

time_is=time.time()

interpolation_search(key,sorted_list)

print time.time()-time_is

if __name__ == '__main__':

run_experiment()

raw_input("Stop")

我是Python新手。我想测量这些算法的时间,所以我使用“时间”方法。但是输出看起来像:

^{pr2}$

有时第一次测量会改变。如何更改这些输出?我应该更改时间分析的代码吗?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值