• Aucun résultat trouvé

Approche r´ ecursive du tri par fusion : f us(p, q)

N/A
N/A
Protected

Academic year: 2022

Partager "Approche r´ ecursive du tri par fusion : f us(p, q)"

Copied!
3
0
0

Texte intégral

(1)

Lyc´ee Hoche MPSI B TD Maple - Algorithmes de tri Algorithmique et calcul formel

Un tableau de nombres ´etant donn´e, on doit ranger les valeurs de ce tableau par ordre croissant. On consid`ere deux m´ethodes : le tri par insertion et le tri par fusion.

initialisation de B

cle <-- 1

c l e < = n

inserer(A[cle],cle)

c l e < - - c l e + 1

fin F

V

Fig.1 –ins()

Tri par insertion : ins()

Il est `a noter que l’appel se fait sans param`etre car des variables globales sont utilis´ees.

Variables globales de la proc´edure principale A : tableau donn´e

n: entier,Aest index´e de 1 `an B : tableau r´esultat

Variables locales

cle : cl´e pour le parcours deA

Le principe est le suivant (figure 1) : – Parcourir le tableau donn´e

– Ins´erer lavaleur courante du tableau donn´e dans le tableau de r´esultats La proc´edureins() utilise une autre proc´edureinserer(x, p) qui ins`ere `a la bonne place la valeur xdans le tableau B entre 1 etp. Il est `a noter que le tableau B partiellement rempli et que les valeurs ins´er´ees sont rang´ees.Pour cette deuxi`eme proc´edure,B est toujours une variable globale,cleB est une variable locale.

Approche r´ ecursive du tri par fusion : f us(p, q)

Deux proc´edures sont utilis´ees : la proc´edure principale (r´ecursive)f us(p, q) et une autre not´eef usionner(p, m, q).

Il est assez facile de fusionner deux listes d´ej`a tri´ees en une liste tri´ee.

On imagine par exemple deux piles de copies d´ej`a tri´ees par ordre alphab´etiques avec le nom visible et les lettres du d´ebut de l’alphabet sur le dessus de la pile. On prend alors dans chaque pile la copie visible dont le nom est avant l’autre copie visible et on forme une troisi`eme pile. Cette troisi`eme pile sera compl`etement tri´ee.

L’appel de la proc´eduref us(p, m, q) r´eordonne entrepetqles valeurs d’un tableau A(variable globale) qui ´etait partiellement tri´e (dep`amet dem+ 1 `a q. L’appel f us(p, q) trie ”en place” le tableau Apour les cl´es entrepet q. Apr`es l’appel :

A[p]≤A[p+ 1]≤ · · · ≤A[q]

Cette proc´edure est r´ecursive

La deuxi`eme id´ee est de r´epartir toutes les copies du d´epart en tas plus petits que l’on trie puis de les fusionner (figure 4).

Les proc´edures seront ´ecrites en utilisant deux variables globales A et n , A d´esignant le tableau index´e de 1 `an`a trier.

Cette cr´eation est mise `a disposition selon le Contrat

Paternit´e-Partage des Conditions Initiales `a l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-sa/2.0/fr/

1 emy Nicolai tris12 novembre 2008

(2)

Lyc´ee Hoche MPSI B TD Maple - Algorithmes de tri Algorithmique et calcul formel

cleB <-- p

c l e B > = 0 e t B [ c l e B ] > x

B [ c l e B + 1 ] < - - B [ c l e B ]

cleB <-- cleB - 1

B [ c l e B + 1 ] < - - x

fin F

V

Fig.2 –inserer(x, p)

cle <-- p cle1 <-- p c l e 2 < - - m + 1

initialiser B

c l e 1 < = m e t c l e 2 < = q

A [ c l e 1 ] < = A [ c l e 2 ]

B[cle] <-- A[cle2]

c l e 2 < - - c l e 2 + 1

B[cle] <-- A[cle1]

c l e 1 < - - c l e 1 + 1

c l e < - - c l e + 1 completer B

F V

fin

V

F

A <-- B

Fig.3 –f usionner(p, m, q)

Cette cr´eation est mise `a disposition selon le Contrat

Paternit´e-Partage des Conditions Initiales `a l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-sa/2.0/fr/

2 emy Nicolai tris12 novembre 2008

(3)

Lyc´ee Hoche MPSI B TD Maple - Algorithmes de tri Algorithmique et calcul formel

q - p > 1

m < - - m i l i e u d e p e t q

fus(p,m) f u s ( m + 1 , q )

fusionner(p,m,q)

ranger les deux valeurs

fin V

F

Fig.4 –f us(p, q)

Cette cr´eation est mise `a disposition selon le Contrat

Paternit´e-Partage des Conditions Initiales `a l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-sa/2.0/fr/

3 emy Nicolai tris12 novembre 2008

Références

Documents relatifs

Trouver une condition sur b pour que la fonction ϕ(x) soit une contraction sur l’in- tervalle [1,

[r]

Le milieu des deux diagonales est M donc ABDC est un parall´ elogramme.. ABC est rectangle en A donc ABDC est

[r]

Une question non résolue n’empêche pas toujours de faire les suivantes : dans ce cas indiquez clairement que vous admettez le(s) résultat(s) de la question non faite.. La «

[r]

Dans ce cours sont r´ eunis trois r´ esultats fondamentaux d’analyse, connus respectivement sous le nom d’´ egalit´ e de accroissements finis, d’in´ egalit´ e des

Un nombre entier naturel est dit premier lorsqu’il admet exactement deux diviseurs positifs : 1 et lui-même..