1.二分查找
二分查找算法其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置;否则赶回null。
2,二分查找的python代码
def binary_search(list, item):
low = 0
high = len(list)-1 #low和high用于跟踪要在其中查找的列表部分
while low <= high: #只要范围没有缩小到只包含一个元素,
mid = (low + high) / 2 #就检查中间的元素
guess = list[mid]
if guess == item: #找到了元素
return guess
if guess > item: #猜的数字大了
high = mid-1
else: #猜的数字小了
low = mid+1
return None
my_list = [1, 3, 5, 7, 9]
#测试
print(binary_search(my_list, 3))
print(binary_search(my_list, -1))
3,一些常见的大O运行时间
- O(logn):对数时间,包括二分查找
- O(n):线性时间,包括简单查找
- O(n*logn):包括快速排序
- O(n^2):包括选择排序
- O(n!):旅行商问题
4.启示
- 算法的速度指的并非时间,而是操作数的增速
- 谈论算法速度时,说的是随输入的增加,其运行时间将以什么样的速度增加
- 算法的运行时间用大O表示法表示
- O(logn)比O(n)快,当需要搜索的元素越多时,前者比后者快越多。