Comment trouver le nombre le plus proche dans une liste d'entiers ?

DDD
Libérer: 2024-11-09 05:11:01
original
846 Les gens l'ont consulté

How to Find the Closest Number in a List of Integers?

Trouver le nombre le plus proche d'une valeur donnée dans une liste d'entiers

Supposons que nous ayons une liste d'entiers et que nous voulions déterminer quel nombre est la plus proche d’une valeur donnée. Nous pouvons utiliser différentes méthodes pour y parvenir.

Utilisation de la fonction min() pour les listes non triées :

Si nous ne pouvons pas garantir que la liste est triée, nous pouvons tirer parti de la Fonction min() intégrée. Il sélectionne l'élément avec la distance minimale du nombre spécifié à l'aide d'une fonction clé.

>>> min(myList, key=lambda x:abs(x-myNumber))
4
Copier après la connexion

Cette méthode trouve efficacement le nombre le plus proche dans la complexité temporelle O(n).

Utilisation de la méthode de bissection pour les listes triées :

Si la liste est déjà triée, ou si nous sommes prêts à la trier une fois, nous pouvons utiliser la bissection méthode. Cette méthode réduit la complexité temporelle à O(log n). Cependant, vérifier si la liste est déjà triée prend O(n), et le tri lui-même nécessite O(n log n).

>>> low, high = 0, len(myList) - 1
>>> while low <= high:
>>>     mid = (low + high) // 2
>>>     if myList[mid] == myNumber:
>>>         return myList[mid]
>>>     elif myList[mid] > myNumber:
>>>         high = mid - 1
>>>     else:
>>>         low = mid + 1
>>>     if low > high:
>>>         closest = myList[high] if abs(myList[high] - myNumber) < abs(myList[low] - myNumber) else myList[low]
>>>         return closest
Copier après la connexion

En sélectionnant l'élément le plus proche, cette méthode fournit une solution optimale pour les listes triées .

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal