MetMat

Comment rechercher un élément, un maximum, ou deux valeurs proches dans une liste Python ?

En imbriquant deux boucles pour rechercher les deux valeurs les plus proches (en minimisant xixj|x_i-x_j|)

L'objectif

Trouver le couple (xi,xj)(x_i,x_j) d'une liste minimisant la distance xixj|x_i-x_j| par un double parcours.

Le principe

Parmi les (n2)\binom{n}{2} couples (i,j)(i,j) avec i<ji<j, on cherche celui qui minimise L[i]L[j]|L[i]-L[j]| ; le coût est en O(n2)O(n^2) et les deux boucles imbriquées doivent être ordonnées (j>ij>i) pour ne pas compter deux fois le même couple.

La méthode
  1. 1
    J'initialise d_min = float('inf') et un couple courant (a, b) = (None, None).
  2. 2
    Je parcours i de 00 à n2n-2 et, pour chaque i, j de i+1 à n1n-1.
  3. 3
    Je calcule d = abs(L[i] - L[j]) et, si d < d_min, je mets à jour d_min, a, b.
  4. 4
    Je renvoie le couple (a, b) et la distance minimale d_min.

Exemple corrigé

Difficulté croissante de 1 à 3

Exercices aujourd'hui0 / 3

Prêt à t'entraîner ?

Génère un exercice personnalisé sur cette méthode et entraîne-toi avec la correction IA.