二分查找 python实现

欢迎回来 ^first blood.

要求A是升序数组

递归

只能查 数据存不存在,不能返回下标

def binary_find(A, m):
	if len(A) == 0:
		return -1
		
	i = int(len(A)/2)
	if A[i] == m:
		return i
	if A[i] > m and i - 1 > 0
		return binary_find(A[0:i], m)
	if A[i] < m and len(A)- (i+1) > 0
		return binary_find(A[i+1 : ], m)
		
	return -1

不用递归

可返回下标

def	binary_find(A, m):
	low = 0
	high = len(A) - 1
	
	while low <= high:
        i = int( (low + high) / 2)
        if A[i] == m:
            return i
        if A[i] > m:
            high = i - 1
        else:
            low = i + 1
        return None
原文地址:https://www.cnblogs.com/love-study-chase/p/11908428.html