算法
算法简介
算法是一组完成任务的指令。当数据量比较大的时候,算法的优劣对程序的性能好坏极为重要
衡量算法性能 - 大 O 表示法
-
算法的速度指的并非时间,而是操作数的增速
-
谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加
-
算法的运行时间用大 O 表示法表示
-
大 O 表示法指出了最糟情况下的运行时间
-
O(logn) 比 O(n) 快,当需要搜索的元素越多时,前者比后者快得越多
二分查找
目的: 查找某个数是否存在于数组中
算法: 前提条件:a 为数组,first 和 last 分别指向数组的头尾,mid 指向数组的中间项,value 为要查找的数
如果 first > last, 返回 None(没有找到元素),否则循环执行以下程序:
mid = (first + last) // 2
- 如果 a[mid] > value ,查找区间变为[first, mid-1]
- 如果 a[mid] < value ,查找区间变为[mid+1, last]
- 如果 a[mid] = value ,返回 mid
代码:
def BinarySearch(a, value):
first = 0
last = len(a) - 1
while first <= last:
mid = (first + last) // 2
guess = a[mid]
if guess < value:
first = mid + 1
elif guess > value:
last = mid - 1
else:
return mid
return None
二分查找的时间复杂度:O(logn)