二分查找和杨辉三角
Posted z18271397173
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找和杨辉三角相关的知识,希望对你有一定的参考价值。
确定该期间的中间位置K
(2)将查找的值T与K比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:
K>T 由数组的有序性可知;故新的区间为[T,L[-1]]
K<T 类似上面查找区间为0-T。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。
‘‘‘ 二分法‘‘‘ #用递归的方法不断搜索 # L=[1,2,10,30,33,99,101,200,301,311,402,403,500,900,1000] #从小到大排列的数字列表 # # def find(x,y): # k = len(y) # m =k // 2 # print(m) # o = y[m] # print(‘oooo‘,o) # if x > o: # y = y[m:] # if len(y) == 2: # exit(y) # find(x,y) # elif x < o: # y = y[:m] # if len(y) == 2: # exit(y) # # find(x,y) # else: # print(‘找到了‘) # # find(3,l) # 结果: # [2, 10] # 7 # oooo 200 # 3 # oooo 30 # 1 # oooo 2
生成器的send方法
‘‘‘yield from‘‘‘ # import time # def inner(): # for i in range(5): # yield i # # # def quot(): # g_inner = inner() # while True: # print(time.time()) # res =g_inner.send(None) #在这里的send(None)就是相当于next(g_inner) # print(‘===‘,res) # print(time.time()) # yield res # # q_outer = quot() # while True: # try: # print(q_outer.send(None)) # except StopIteration: # break ‘‘‘杨辉三角‘‘‘ # def triangles(max): # L = [1] # while True: # yield (L) # generator生成器会存下这个L # if len(L) >= max: # break # L.append(0) # 注意:每次产生一列的时候,紧接着就是在这一列的后面追加一个0元素以作为新的列的基础 # L = [L[n - 1] + L[n] for n in range(len(L))] # # # for i in triangles(8): # print(i)
以上是关于二分查找和杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章