Maison > développement back-end > Tutoriel Python > Comment trouver le nombre le plus proche dans une liste : méthode Min() ou méthode Bisection ?

Comment trouver le nombre le plus proche dans une liste : méthode Min() ou méthode Bisection ?

Barbara Streisand
Libérer: 2024-11-10 08:12:02
original
876 Les gens l'ont consulté

How to Find the Closest Number in a List: Min() vs. Bisection Method?

Trouver le nombre le plus proche dans une liste

Étant donné une liste d'entiers non triés, déterminer le nombre le plus proche d'une valeur donnée est une programmation courante tâche. Pour y parvenir, plusieurs approches existent.

Utiliser la fonction min()

Si la liste n'est pas triée, la fonction min() propose une solution rapide et efficace. Il considère chaque élément de la liste et renvoie celui avec la différence absolue minimale par rapport au nombre fourni.

>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> min(myList, key=lambda x:abs(x-myNumber))
4
Copier après la connexion

Méthode de bissection

Si la liste est déjà triée ou peuvent être triés efficacement, la méthode de bissection est une approche plus efficace. Cela prend un temps O(log n), où n est le nombre d'éléments dans la liste.

def takeClosest(arr, target):
  left = 0
  right = len(arr) - 1
  while left <= right:
    mid = (left + right) // 2
    if arr[mid] == target:
      return arr[mid]
    elif arr[mid] < target:
      left = mid + 1
    else:
      right = mid - 1
  if left == 0 or arr[left-1] > target:
    return arr[left]
  return arr[left-1]
Copier après la connexion

La complexité temporelle de l'approche de la fonction min() est O(n), alors que le temps de la méthode de bissection la complexité est O (log n), offrant un avantage de performance significatif pour les listes plus grandes.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal