• Aucun résultat trouvé

Tri fusion

N/A
N/A
Protected

Academic year: 2022

Partager "Tri fusion"

Copied!
4
0
0

Texte intégral

(1)

Tri fusion

def TriFusion(T) : Si |T| > 1 Alors :

Si |T| == 2 Alors :

Si T[0]>T[1] Alors T[0] ⟷ T[1]

Sinon :

m = |T| / 2

T = Fusion(TriFusion(T[0..m-1]),TriFusion(T[m..|T|-1])) Retourner T

Fusion = fusion des deux tableaux donnés en argument.

(2)

Tri fusion

def Fusion (L1,L2) : res = [ ]

i1 = i2 = 0

Tant que i1< |L1| ∧ i2 < |L2| : Si L1[i1] < L2[i2] Alors :

res.append(L1[i1]) i1 = i1+1

Sinon :

res.append(L2[i2]) i2 = i2+1

Si i1== |L1| Alors : res += L2[i2:]

Sinon :

res += L1[i1:]

Retourner res

“ET” logique ⚠

→ on concatène la fin de L

2

à res…

→ on concatène la fin de L

1

à res…

→ on ajoute L

1

[i

1

] à res…

→ on ajoute L

2

[i

2

] à res…

(3)

Tri fusion

public static void triFusion (int [] T, int d, int f) {

int m;

if(d<f)

// si d>f, T est vide, si d==f, T ne contient qu'un element {

m = (d+f)/2;

triFusion(T, d, m);

triFusion(T, m+1, f);

fusionner (T, d, m, f);

} }

Java

(4)

Tri fusion

// les zones a fusionner sont: d,d+1,...,m et m+1,m+2,...,f public static void fusionner (int T[], int d, int m, int f) {

int [] AuxZone = new int[f-d+1];

for (int j=0;j<AuxZone.length;j++) // on recopie la zone dans AuxZone...

AuxZone[j]=T[d+j];

int i1 = 0, i2 = (m-d)+1, i=d ;

while ((i1<= (m-d)) && (i2 <= f-d)){

if(AuxZone[i1] <= AuxZone[i2]){

T[i] = AuxZone[i1];

i1++; } else {

T[i] = AuxZone[i2];

i2++;}

i++;}

while(i1<=(m-d)) { // on met la fin de la premiere moitie si il en reste...

T[i]=AuxZone[i1]; i1++; i++; }

while(i2<=f-d) { // idem pour l'autre moitie…

T[i]=AuxZone[i2]; i2++; i++; } }

Java

Références

Documents relatifs

L’intérêt de choisir n puissance de 2 est qu’on aura à chaque étape un nombre pair de monotonies à fusionner, et que les monotonies d’une étape donnée auront toutes la

Postconditions : Les monotonies de nomFicX sont réparties (1 sur 2) dans des fichiers appelés nomFicA et nomFicB : la première monotonie est copiée dans le fichier A,

Lorsqu’une base de données est très volumineuse et non ordonnée, trouver une information dans cette base est très long et très ingrat.. En effet la seule solution est

Dans le tri rapide, après les 2 tris partiels, tous les éléments de la partie gauche sont inférieurs au pivot, alors que tous les éléments de la partie droite... naturelle, et

[r]

Chaque comparaison générant deux possibilités, k comparaisons permettront de génerer au plus 2 k permutations distinctes.. • Le tri shell avec la suite

L’après midi, Paul DEFFONTAINE, président du Cercle National du Recyclage et Vice-président de Lille Mé- tropole Communauté urbaine, animera les débats consacrés aux avancées

Faire chanter Margaret Red Eyes Stanford, la conseillère culturelle de la mairie pour avoir cédé aux pressions des Pueblos pour que cette vente aux enchères ait lieu et qu’ils