 Expliquez pourquoi cet algorithme fonctionne.
def binary_search(list, target):\n lower = 0 \n upper = len(list) - 1\n \n while lower <= upper: \n mid = (lower + upper) // 2 # Floor Division\n deviner = liste[moyen]\n si deviner == cible :\n renvoyer milieu\n si deviner > cible :\n supérieur = moyen - 1\n sinon : \n inférieur = moyen + 1\n \n retourner Aucun
 Cet algorithme fonctionne en utilisant une approche diviser pour mieux régner. Il commence par diviser la liste donnée en deux parties et trouve une position réglée en divisant de manière répétée la liste par deux jusqu'à ce que l'élément cible soit trouvé. Cette approche est avantageuse car elle réduit considérablement le nombre de comparaisons nécessaires pour trouver la valeur cible. Si l'élément n'est pas trouvé, les limites supérieure et inférieure de la recherche deviennent égales, ce qui signifie que l'élément n'existe pas dans la liste. Par conséquent, l'algorithme est assuré de trouver la cible (si elle existe) ou de renvoyer None si elle n'existe pas.