IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Opération par dichotomie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut Opération par dichotomie
    Salut,

    J'ai une valeur, par exemple 348.4.
    Dans un tableau annexe, j'ai une liste de valeurs: 125, 258.6, 346, 356, ...

    J'aimerais, en donnant comme paramètre 348.4, qu'on me retourne la valeur la plus proche, c'est à dire 346.

    Je ne connais pas de fonction qui fait ça; je pensais faire une fonction opérant par dichotomie (je divise 348.4 par 2 et contrôle sa position dans une boucle...)

    J'aimerais éviter des calculs compliqués, pour ne pas ralentir le programme.

    Comment faire?

    Edit: Yioups, je fais compliqué, il y a plus simple. Mais si une fonction existe, je suis preneur.
    Merci

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Je pense que tu peux faire ça assez simplement :

    - Tu rajoutes cette valeur dans le tableau annexe ;
    - Tu fais un sort de ce tableau ;
    - Tu prends les deux valeurs correspondant aux valeurs de part et d'autres de celle que tu viens d'insérer (facile, en ayant le tri les index sont -1 et +1) ;
    - Tu compares les valeurs absolues de la soustraction de cette valeur avec celle en entrée et tu récupères la plus petite ;
    - Tu supprimes la valeur ajoutée au tableau.

  3. #3
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Bon pour ceux que ça intéresse, j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    function arrnumber($tab, $n, $sup=FALSE) {
     
      // Initialisation
      $temp = $n;
      $temp2 = max(array_values($tab));
     
      // Contrôle des deux valeurs voisines à $n
      foreach($tab AS $m) {
     
       if ($m > $n) {
        $temp2 = $m;
        break;
       }
     
       $temp = $m;
     
      }
     
      if (abs($temp2 - $n) == abs($temp - $n)) {
     
       // Retourne la valeur supérieure si $sup = TRUE
       // sinon la valeur inférieure
       return ($sup) ? $temp2 : $temp;
      }
     
      // Retourne la valeur la plus proche de $n
      return (abs($temp2 - $n) > abs($temp - $n)) ? $temp : $temp2;
     
     }
    Edit: merci, j'ai loupé ta réponse de peu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résolution d'une équation par dichotomie
    Par jojo5457 dans le forum Général Python
    Réponses: 10
    Dernier message: 11/11/2012, 15h38
  2. Réponses: 6
    Dernier message: 05/06/2008, 22h05
  3. Réponses: 3
    Dernier message: 25/01/2008, 23h14
  4. liste biderctionelle ou tri par dichotomie
    Par abdoue2004 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 18/03/2007, 13h50
  5. Extraction opération par utilisateur SQL
    Par voodoo_mg dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/04/2006, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo