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 :

fusionner deux tableaux triés ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 388
    Points
    388
    Par défaut fusionner deux tableaux triés ?
    Salut,
    J'ai deux tableaux d'entiers T1 et T2, ils sont triés
    Je voudrais un algorithme me permettant de fusionner T1 et T2 pour avoir un 3eme tableau T qui lui aussi est trié et ce sans avoir recours aux fonctions/procédures (si possible)
    Merci

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    ben tu parcours les 2 tableaux en parallele et tu mets le plus petit a chaque fois dans ton tableau resultat de taille(T1) + taille(T2)...je vois pas trop le probleme..

  3. #3
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 388
    Points
    388
    Par défaut
    je ne vois pas trop comment tu veux faire, mais j'ai essayé cette solution (du moins une solution que je pense similaire) : le pb c'est qu'on aura des valeurs répétées plusieurs fois dans le nouveau tableau, et d'autres qui ne sont meme pas présentent dans le nouveau tableau !
    Et meme si la méthode marche, je ne vois pas où a-t-on profité du fait que T1 et T2 sont triés ! Je pense que l'algo doit en tenir compte.
    Bref stp essaie de détailler ta proposition sur papier et de faire un petit exemple

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    T1 : [1 3 6 7 9]

    T2 : [2 3 4 6 9 10]

    Tres : []

    iteration1 : Tres : [1]
    iteration2 : Tres : [1 2]
    iteration3 : Tres : [1 2 3]
    iteration4 : Tres : [1 2 3 3]
    ...
    Tres : [1 2 3 3 4 6 6 7 9 9 10]

    Tu profites quand meme en quelque sorte du tri initial, pour les doublons il reste pas grand chose a faire pour les virer si tu veux (quand tu compares les valeurs à l'endroit de tes iterateurs, si elles sont egales tu incrementes tes 2 iterateurs sinon un seul).

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Arno a donné la bonne méthode :
    Supposant t1 et t2 en ordre croissant, le code devrait ressembler à ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    i1:=0 ; //  index dans t1
    i2:=0 ; //  index dans t2
    i :=0 ; //  index dans t
    while (i1<high(t1)) or (i2<high(t2) do begin
       if (i2>high(t2) or ((i1<=high(t1)) and (t1[i1]<t2[i2]))  
         then begin t[i]:=t1[i1] ; i1:=i1+1 ; end ;
         else begin t[i]:=t2[i2] ; i2:=i2+1 ; end ;
       i:=i+1 ;
       end ;

  6. #6
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 388
    Points
    388
    Par défaut
    je vais tester ... mais est-ce que ça gère les doublons ? sachant qu'on ne doit PAS supprimer les doublons !

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Salut,

    Les doublons sont conservés.
    Pour les éliminer, il faudrait par exemple comparer t[i] avec t[i-1].

  8. #8
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Les arbres binaires seraient utiles pour cela non ? Bon, c'est sur, leur intérêt se sentirait plutôt sur des tableaux de grande taille mais la récursivité simplifierait la vue sur le programme à mon goût.

  9. #9
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    Citation Envoyé par panda31
    Les arbres binaires seraient utiles pour cela non ?
    C'est un peu bourrin, alors que cela peut se faire de manière linéaire.

    Cet exercice est un cas d'école classique et la solution proposé par graffito est la meilleure.

  10. #10
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    oki

Discussions similaires

  1. [MySQL] fusionner deux tableaux par une variable commune pour faire un tuple unique
    Par mickeynad dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/04/2010, 10h28
  2. Fusionner deux tableaux
    Par jeronimo83 dans le forum Langage
    Réponses: 2
    Dernier message: 08/09/2008, 11h54
  3. [CS3] fusionner deux tableaux d'orientation différentes
    Par isa68 dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 09/08/2008, 11h18
  4. [Tableaux] Fusionner deux tableaux
    Par nicerico dans le forum Langage
    Réponses: 4
    Dernier message: 06/09/2007, 13h57
  5. [Tableaux] Fusionner deux tableaux
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 09/11/2006, 13h42

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