# 二分法,一般用于有序的,但不绝对,无序有时也可以用,具体问题具体分析。当看到有序二字时,先想到二分。时间复杂度为O(logN)
# 注意 mid = (L+R)/2 可以写成 mid = L + ((R-L)>>2)后者在计算很大的数时,容错率更高,而且,位运算一定比除运算快,所以推荐用后者
class Dichotomy:
def dichotomy(self, arr, num):
if arr == None or len(arr) == 0:
return False
l = 0
r = len(arr)-1
while l < r :
mid = l + ((r -l) >> 1)
if arr[mid] == num:
return True
elif arr[mid] < num:
l = mid + 1
else:
r = mid - 1
return arr[l] == num
二分法(python实现)
于 2022-03-05 23:47:29 首次发布