J'ai récemment écrit un article sur les fonctions récursives. Je n'avais pas l'intention de l'utiliser, mais c'était pour étudier, mais j'avais besoin d'une recherche efficace. Il a été sauvegardé car j'aurais dû simplement améliorer la recherche publiée de 2 minutes. Comme c'est un gros problème, je publierai que la fonction améliorée peut être utile. (Bien que j'utilise en fait Javascript au lieu de Python, et qu'il ait une implémentation différente)
python
def binarySearchL(lt, n):
l, r = 0, len(lt) - 1
while l <= r:
middleIndex = int(l + (r - l) / 2)
middleValue = lt[middleIndex]
if middleValue > n:
l, r = l, middleIndex - 1
elif middleValue < n:
l, r = middleIndex + 1, r
else:
return middleIndex
return -1
python
def binarySearchGt(lt, n):
l, r = 0, len(lt) - 1
while l <= r:
middleIndex = math.floor(l + (r - l) / 2) #Tronquer
middleValue = lt[middleIndex]
if middleValue > n and r - l > 1:
l, r = l, middleIndex
elif middleValue <= n:
l, r = middleIndex + 1, r
else:
return middleIndex
return -1
python
def binarySearchLt(lt, n):
l, r = 0, len(lt) - 1
while l <= r:
middleIndex = math.ceil(l + (r - l) / 2) #Rassembler
middleValue = lt[middleIndex]
if middleValue >= n:
l, r = l, middleIndex - 1
elif middleValue < n and r - l > 1:
l, r = middleIndex, r
else:
return middleIndex
return -1
Recommended Posts