确定该期间的中间位置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)
转载于:https://www.cnblogs.com/z18271397173/p/9531771.html
转载请注明原文地址: https://win8.8miu.com/read-18315.html