1.二分查找:
Note:二分查找列表必须是有序的
原理:选定列表起点和终点索引,计算中间索引,如果要查找的值恰好等于中间索引对应的值则直接返回中间索引,如果要查找的值小于中间索引值,则从中间索引为界的前半部分查找(sindex~mid-1),反之从后半部分查找(mid+1~eindex),mid+1,mid-1的原因mid已经对比过了,从前一个或后一个开始对比,加while条件直到遍历所有结果,没找到返回-1.
def binary_search(find, _list): # 二分查找
sindex = 0
eindex = len(_list)
while sindex < eindex:
mid = (sindex + eindex)/2
if _list[mid] == find:
return mid
elif _list[mid] > find:
eindex = mid - 1
else:
sindex = mid + 1
return -1
2.斐波数列:
不够pythonic示范,多次循环对列表切片取值,append开销较大
def fib(number):
_list = [0,1]
for i in range(number-1):
_list.append(_list[-2]+_list[-1])
return _list[1:]
更好示范:
def fib(number):
a, b = 0, 1
_list = []
for i in range(number):
a, b = a+b, a
_list.append(a)
return _list