标签:inf arch items 缩小 参数 pytho 内容 默认参数 value
import time #引入time库,后续计算时间. inform_m = {} #创建母字典 inform_s = {} #母字典下嵌套的子字典 #给母字典添加键-值 for i in range(1,100001): inform_m.setdefault(str(i),inform_s.fromkeys([‘name‘,‘sex‘,‘age‘],‘Undefined‘)) def search(dic = inform_m, content = ‘Undefined‘): #设置dic content默认参数,dic为要查找的字典,content为要查找的内容 time_b = time.time() #调用方法时记录启动时间 num_key = dic.items() num_keys = len(num_key) num_begin = 1 num_end = num_keys state = True i = ‘off‘ #初始化所有变量 while state: if num_end == 1: #如果num_end == 1 判断第一项是否是我们要查找的。 if dic[‘1‘][‘name‘] == content: num_end = 1 state = False break else: num_end += 1 state = False break value = dic[str(num_end)][‘name‘] #获取最后一项值 if value == content: value_b = dic[str(num_end - 1)][‘name‘] #获取前一项值 if value == value_b: #如果查找到了content,进而判断前一项是否与content一样,如果一样,则缩小范围,继续查找。如果不一样,证明找到了那么就可以终止循环了 if i == ‘off‘: #i作为一个标准判断 num_begin 是否赋值,同学自己研究一下为什么要判断这个 num_end = num_end // 2 else: num_m = num_begin num_end = (num_end - num_m + 1) // 2 + num_begin else: state = False else: if num_end == num_keys: state = False else: i = ‘on‘ num_m = num_begin num_begin = num_end num_end = (num_end - num_m + 1) // 2 + num_begin time_e = time.time() print(‘调用二分查找算法开始时间:{} 结束时间:{}‘.format(time_b,time_e)) return num_end def normal(): time_bb = time.time() for ii in range(1,100001): value = inform_m[str(ii)][‘name‘] if value == ‘Undefined‘: break else: pass time_ee = time.time() print(‘调用普通算法开始时间:{} 结束时间:{}‘.format(time_bb,time_ee)) return ii for j in range(1,94181): #给字典中的项赋值 inform_m[str(j)][‘name‘] = ‘Jobs‘ print(search(),normal())
标签:inf arch items 缩小 参数 pytho 内容 默认参数 value
原文地址:https://www.cnblogs.com/1314h/p/14358730.html