constante entier N <- ... { Methode de fusion en un tableau trie } { de deux sous-tableaux contigus } { d'un tableau d'entiers } { Sous-tableau 1: t1 valeurs depuis l'indice i1 } { Sous-tableau 2: t2 valeurs au dela } action fusion(int [] t,int i1,int t1,int t2) Donnees / Resultat t : Tableau [N] de entier Donnees i1 : entier t1 : entier t2 : entier Locales deb : entier i2 : entier l : entier l1 : entier l2 : entier tf : Tableau [N] de entier i : entier deb <- i1 i2 <- i1+t1 l <- t1+t2 l1 <- i1+t1 l2 <- l1+t2 pour i de 0 à l-1 faire si i1 = l1 alors tf[i] <- t[i2] i2 <- i2+1 sinon si i2 = l2 alors tf[i] <- t[i1] i1 <- i1+1 sinon si t[i1] < t[i2] alors tf[i] <- t[i1] i1 <- i1+1 sinon tf[i] <- t[i2] i2 <- i2+1 fsi fsi fsi fait pour i de 0 à l-1 faire t[deb+i] <- tf[i] fait fin action { Methode de tri par fusion d'un tableau } { d'entiers des indices indi a indf compris } action triFusion(t,indi,indf) Donnees / Resultat t : Tableau [N] de entier Donnees indi : entier indf : entier Locales iMedian : entier aux : entier dans le cas de indf-indi 1 : si t[indf] < t[indi] alors aux <- t[indi] t[indi] <- t[indf] t[indf] <- aux fsi autres cas : iMedian =(indi+indf)/2 si indi != iMedian alors triFusion(t,indi,iMedian) fsi si iMedian+1 != indf alors triFusion(t,iMedian+1,indf) fsi fusion(t,indi,iMedian-indi+1,indf-iMedian) fcas fin action { Methode de tri par fusion de l'ensemble } { d'un tableau d'entiers } action triFusion(int [] t) Donnees / Resultat t : Tableau [N] de entier triFusion(t,0,N-1) fin action