bien le bonsoir,
je ne me souviens plus de l'algo pour permuter 2 variables sans utiliser une 3ème variable. si si, je sais que c'est possible.
et je n'arrive pas à remettre la main dessus.
merci bien.
bien le bonsoir,
je ne me souviens plus de l'algo pour permuter 2 variables sans utiliser une 3ème variable. si si, je sais que c'est possible.
et je n'arrive pas à remettre la main dessus.
merci bien.
Il y a une variante avec des XORs, et une avec des opérations arithmétiques (attention aux overflows avec la seconde).
Permutation A/B :Ou :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 A <- A Xor B B <- B Xor A A <- A Xor B
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 A <- A - B B <- A + B A <- B - A
Je ne sais pas si c'est que tu cherche, mais comme cela, ca a l'air de fonctionner:
exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var a, var b a=a+b b=a-b a=a-b
et c'est permuté !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6a = x et b = y => a = x + y b = a - b = x + y - y = x => donc b = x a = x + y - x => a = y
<edit>
oups, le temps que je brouillone et que j'ecrive, je me suis fait devancé par Mac Lak...![]()
</edit>
++
Pouic
Mon papy, c'est Flash et mon papa, c'est Lucky Luke...Envoyé par Pouic
![]()
![]()
![]()
Problème récurrent
Var A, B : réel ; Début Lire(A,B) ; Si (A>=B) Alors A<-A-B; B<-A+B; A<-B-A; Sinon B<-B+A; A<-B-A; B<-B-A; Fsi Écrire(A,B); Fin.
Ca fait gagner de la mémoire, mais l'utilisation d'opération arithmétiques est BIEN PLUS lente.
Donc quel est réellement l'intérêt de le faire ?
Et d'autre part, (et d'autant plus que les ordres de grandeur de A et B sont très différents) il va y avoir des erreurs de troncature lors des opérations qui feront qu'on ne retrouvera pas exactement les mêmes nombres une fois la "permutation" effectuée...
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