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
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
'...parfois l'informatique peut vous rendre fou...'
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..
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
'...parfois l'informatique peut vous rendre fou...'
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).
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 ;
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
je vais tester ... mais est-ce que ça gère les doublons ? sachant qu'on ne doit PAS supprimer les doublons !
'...parfois l'informatique peut vous rendre fou...'
Salut,
Les doublons sont conservés.
Pour les éliminer, il faudrait par exemple comparer t[i] avec t[i-1].
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
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.
Michaël Mary
Consultant PLM dans une société de conseil toulousaine
Auditeur CNAM-IPST depuis septembre 2008
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
John F. Woods
mon cv et mon domaine et mon blog
Aucune question technique par MP, svp
Bonjour,
C'est un peu bourrin, alors que cela peut se faire de manière linéaire.Envoyé par panda31
Cet exercice est un cas d'école classique et la solution proposé par graffito est la meilleure.
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
oki
Michaël Mary
Consultant PLM dans une société de conseil toulousaine
Auditeur CNAM-IPST depuis septembre 2008
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
John F. Woods
mon cv et mon domaine et mon blog
Aucune question technique par MP, svp
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager