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

Algorithmes et structures de données Discussion :

Permuter des valeurs, le plus rapidement possible?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Points : 49
    Points
    49
    Par défaut Permuter des valeurs, le plus rapidement possible?
    Bonjour,

    Je dispose de 12 variables differentes contenant chacunes des string.
    Mes variables sont nommé:
    var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12

    J'aimerai faire en sorte de decaler toute mes variables vers la gauche, pour permuter les valeurs de celle-ci, au cas ou les variable a l'extreme gauche soit vide ==> ""
    Ex:

    "" / aaaa / bbbbbb/ ""/ fdfdfdfd/ "" / DFDFDF/ "" / "" / "" / ewew / ""

    Je veux obtenir ça:
    aaaa / bbbbbb/ fdfdfdfd / DFDFDF / ewew / "" / "" / "" / "" / "" / "" / ""
    var1 var2 var3 var4 var5 ..........

    Comment faire cela de façons assez rapide??

    Merci

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Si tu as 12 variables, pourquoi ne pas les stocker dans un tableau, si elle représentent le même type de données ?

    Ensuite, étant donné qu'il s'agit uniquement de 12 variables, le plus rapide en performance me parrait être une recopie directe des variables dans un nouveau tableau, à moins que le langage que tu utilises te permette de faire un décalage de pointeurs..

    Donc tu pourrais avoir deux tableaux parallèle, un contenant tes données à décaller, et le second contenant tes données décallées. Ca utilise 2x plus de mémoire, mais pour 12 variables, ça ne me parrait pas abérant.

    Ensuite, comment se fait-il que tu te retrouves avec des valeurs à décaler ? Peut-être que tu peux éviter celà, en ne commençant l'affectation de tes variables uniquement après avoir détecté une valeur non vide ( "" ) ?
    K

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    Oui c'est exactement ce que je fais

    Merci, quand meme,

    En fait, j'ai des "" dans mes variables cra se sont des combobox que l'utilisateur peux avoir oublier de remplir ;-)

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    j'ai aucune idée si c'est plus ou moins gourmand en ressources
    mais c peut etre une idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    $chaine = ' "" / aaaa / bbbbbb/ ""/ fdfdfdfd/ "" / DFDFDF/ "" / "" / "" / ewew / ""';
    $nb_liste=count(split('/',$chaine));
    $motifs = array('"" /','/ ""');
    $liste_trav = explode('/',str_replace($motifs,'',$chaine));
    $nb_trav = count($liste_trav);
    $liste = implode('/',$liste_trav).''.str_repeat('/ ""', ($nb_liste-$nb_trav));
    ?>
    peut etre (surement) y a t'il plus simple, mais bon ...

    eric

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    On peut se débrouiller avec un seul tableau (tu dois pouvoir regouper tous tes combo dans un seul tableau).

    Il suffit de deux index, le premier servant à la recherche des cases à vider (pour en combler d'autres), le second à la recherche des cases à combler.

    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
    30
    31
    32
    33
    t est la taille du tableau (indexé de 1 à t)
    i1 est l'index recherchant les cases à vider
    i2 est l'index recherchant les cases à combler
    // amorçage de l'algo : on recherche la première case occupée après une case vide, 
    // en effet c'est après la première case vide qu'on commence à déplacer
    i1 = 1
    tant que i1 < t+1 et case_occupée(i1) faire
       i1 <- i1+1
    si i1 < t +1 alors
    // ici i1 est la première case vide, donc i2 prend la valeur de i1
       i2 <- i1 
       // on recherche maintenant la prochaine case occupée
       faire
          i1 <- i1 + 1
       tant que i1 < t + 1 et case_vide(i1) 
       si i1 < t + 1 alors
          // l'algo est amorcé, les conditions de début de boucle sont
          // i1 pointe sur une case occupée
          // i2 pointe sur une case vide
          faire
              transfert de la case i1 vers la case i2
              // ici i1 pointe vers une case vide, on recherche la prochaine case occupée
             faire
                  i1 <- i1 + 1
             tant que i1 < t + 1 et case_vide(i1) 
             si  i1 < t + 1 alors
                // avec le principe de l'algot dès qu'on commence à combler
                // les cases vides se suivent
                i2 <- i2 + 1
             fin si
           tant que i1 < t + 1
        fin si
    fin si
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

Discussions similaires

  1. [VBA-E] Ecrire un fichier texte le plus rapidement possible
    Par spileo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/09/2007, 20h51
  2. Réponses: 3
    Dernier message: 02/05/2007, 23h02
  3. Tri le plus rapide possible
    Par PadawanDuDelphi dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/10/2006, 19h19
  4. Lire un fichier le plus rapidement possible
    Par Rodrigue dans le forum SL & STL
    Réponses: 9
    Dernier message: 02/05/2006, 10h43
  5. Réponses: 10
    Dernier message: 12/01/2006, 21h22

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