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 + 1return -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