更佳的查找方式
①对于包含n个元素的列表,用二分查找最多需要log2n步。简单查找最多需要n步。
②使用数组查找元素。函数binary_search接受一个有序数组和一个元素。
def binary_search(list,item):
low=0
high=len(list)-1
while low<=high:
mid=(low+high) #每次都检查中间的元素(如果low+high不是偶数
#自动将mid向下圆整)
guess=list[mid]
if guess==item:
return mid
if guess>item:
high=mid-1#如果猜的数字大了,修改high
else:
low=mid+1#如果猜的数字小了,修改Low
return None
my_list=[1,3,5,7,9]
print(binary_seSarch(my_list,3))#=>1
print(binary_search(my_list,-1))#=>None
运行时间
①简单查找线性时间O(n),二分查找对数时间,快速排序O(n * log n ),
选择排序(较慢)O(n2)。
②算法的速度并非时间,而是操作数的增速。