Trouver l'entier le plus proche d'une valeur donnée dans une liste
Pour déterminer le nombre dans une liste donnée qui est le plus proche d'une valeur cible , plusieurs approches peuvent être envisagées :
Utilisation de la fonction min() intégrée Fonction :
Si la liste n'est pas triée, la fonction min() fournit un moyen pratique de trouver l'élément le plus proche. Elle nous permet de spécifier une fonction clé pour évaluer la distance par rapport à la valeur cible :
min(myList, key=lambda x:abs(x-myNumber))
Cette approche a une complexité temporelle de O(n), où n est la longueur de la liste.
Utilisation de la méthode de bissection (pour les listes triées) :
Si la liste est déjà triée ou peut être triée efficacement, la méthode de bissection offre une solution plus rapide avec une complexité temporelle de O (log n). Cette technique consiste à diviser à plusieurs reprises la liste en deux et à comparer la valeur cible à l'élément du milieu jusqu'à ce que l'élément le plus proche soit trouvé.
Comparer les différences absolues :
Une autre approche est pour parcourir la liste et calculer la différence absolue entre chaque élément et la valeur cible. L'élément avec la plus petite différence absolue est alors considéré comme le plus proche :
closest_num = None min_diff = float('inf') for num in myList: diff = abs(num - myNumber) if diff < min_diff: closest_num = num min_diff = diff
Cette approche a également une complexité temporelle de O(n).
Le choix de l'approche dépend de facteurs tels que comme la taille de la liste et si elle est déjà triée. Pour les petites listes ou les listes non triées, la fonction min() peut être une solution simple. Pour les listes volumineuses ou triées, la méthode de bissection offre une meilleure efficacité.
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!