Trouver le nombre le plus proche dans une liste d'une valeur donnée
Étant donné une liste d'entiers, vous devrez peut-être déterminer quel nombre est le plus proche à une valeur donnée. Cette tâche peut être accomplie efficacement en utilisant les méthodes suivantes :
Liste non triée :
Si la liste d'entrée n'est pas triée, vous pouvez utiliser la fonction intégrée min() avec un argument clé. Cela vous permet de trouver l'élément avec la différence absolue minimale par rapport à la valeur cible.
>>> myList = [4, 1, 88, 44, 3] >>> myNumber = 5 >>> min(myList, key=lambda x: abs(x - myNumber)) 4
Cette méthode prend un temps O(n), car elle parcourt toute la liste.
Liste triée :
Alternativement, si la liste est déjà triée ou si vous souhaitez la trier une fois, vous pouvez utiliser la méthode de bissection. Cette technique utilise la recherche binaire pour localiser le point d'insertion de la valeur cible, trouvant ainsi l'élément le plus proche en un temps O(log n). Voici un exemple d'implémentation utilisant le module bisect de Python :
>>> from bisect import bisect_left >>> myList = sorted([4, 1, 88, 44, 3]) >>> myNumber = 5 >>> bisect_left(myList, myNumber) 2 >>> myList[2] 4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!