二分查找
二分查找是一种算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置。与简单查找从头开始找不同,二分查找从中间开始找,如果中间元素大于我们要找的元素,则可以排除中间元素以及以后的元素,如果中间元素小于我们要找的元素,则可以排除中间元素以及以前的元素。用二分查找最多需要步,而简单查找最多需要n步。
def searchNumber(list,number):
low=0
high=len(list)-1
while low<= high:
mid=(low+high) // 2
guess=list[mid]
if guess==number:
return mid
if guess>number:
high=mid-1
else:
low=mid+1
return None
list1=[1,2,4,5,7,23,45,257,999]
print(searchNumber(list1,2))#1
print(searchNumber(list1,3))#None
对数
相当于问将多少个10相乘结果为100,答案是两个,因此=2,对数运算是幂运算的逆运算。
大O表示法
大O表示法是一种特殊的表示法,指出了算法的速度有多快,下面从快到慢顺序列出了经常遇到的5种大O运行时间:
- O(),也叫对数时间,这样的算法包括二分查找。
- O(n),也叫线性时间,这样的算法包括简单查找。
- O(),这样的算法包括快速排序。
- O(),这样的算法包括选择排序。
- O(n!),这样的算法包括旅行商问题的解决方案。