如果我们想要在数组找到我想要的元素应该怎么办呢??
def S1(a,L1): L2=[] for i in L1: if a == i: L2.append(i) return L2
这种遍历的方法就行 复杂度是 O(len(L1)) 我们没次都是会做最坏打算的所有遍历是必须的
这种方法实在是太慢,难道没有更好的方法吗?
答案就是二分法(当然是有序数组)
我们可以把数组中间的元素和我们要找的元素比较,然后如果中间的元素比较大 那么就把前面一段数组重复这个操作
我们可以想象一下,每次重复操作范围都会除以2 那么这个算法肯定是对数级别的
def serch1(a,L1): su = len(L1) if su < 2: return False item = su/2if a < L1[item]: L1 = L1[:item] return serch1(a,L1) if a > L1[item]: L1 = L1[item:] return serch1(a,L1) if a == L1[item]: return item
see 这个逻辑是不是很清晰