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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
procedure separe (l, l1, l2 : liste);
var l3, l4 : Liste;
debut
vide(l3);
vide(l4);
tant que (l <> NIL) et (l^.suiv <> NIL) faire
debut
queue(l, l1, l3);
queue(l, l2, l4);
fin
si l <> NIL alors
queue(l, l1, l3);
fin
procedure fusion (var l, l3, l4 : Liste);
var l5 : Liste;
debut
vide(l5);
tq (l3 <> NIL) et (l4 <> NIL) faire
si infegal(l3^.val, l4^.val) alors
queue(l3, l, l5)
sinon
queue(l4, l, l5);
si l3 <> NIL alors
debut
concat(l, l3);
l := l3;
l3 := NIL;
fin
sinon
debut
concat(l, l4);
l := l4;
l4 := NIL;
fin
fin
procedure tri (var l : Liste);
var l3, l4 : Liste;
debut
si (l <> NIL) alors
debut
separe(l, l3, l4);
tri(l3);
tri(l4);
fusion(l, l3, l4);
fin
fin |
Partager