5
Tri selection Algorithme pascal 0) Procédure Tri_Select (VAR T : Vect ; N : Entier ) 1) Pour i de 1 à N-1 Faire Pos_Min ← Fn Cherche_Min (T, i, N) Si Pos_Min ≠ i Alors Proc Permute (T[i] , T[Pos_Min]) Fin Si Fin Pour 2) Fin tri_Select Fonction Cherche 0) Fonction Cherche_Min (T : Vect ; départ, N : Entier ) : Entier 1) Min ← T[départ] 2) Indice ← Départ 3) Pour j de départ + 1 à N Faire Si T[j] < Min Alors Min ← T[j] indice ← j Fin Si Fin Pour 4) Cherche_Min ← indice 5) Fin Cherche_Min Procédure Permute 0) Procédure Permute (VAR FUNCTION Cherche_Min (T : Vect ; depart, N : Integer) : Integer ; VAR j, indice : Integer ; Min : Real ; BEGIN Min := T[depart] ; Indice := depart ; For j := depart + 1 To N Do Begin If (T[j] < Min) Then Begin Min := T[j] ; indice := j ; End ; End ; Cherche_Min := indice ; End ; PROCEDURE Permute (VAR a, b : Real ) ; VAR Temp : Real ; BEGIN temp := a ; a := b ; b := temp ; END ; PROCEDURE Tri_Select (VAR T : Vect ; N : Integer ) ; Résumer sur les tris

Resumer sur les tris

Embed Size (px)

Citation preview

Page 1: Resumer sur les tris

Tri selectionAlgorithme pascal0) Procédure Tri_Select (VAR T : Vect ; N : Entier )1) Pour i de 1 à N-1 FairePos_Min ← Fn Cherche_Min (T, i, N)Si Pos_Min ≠ i Alors Proc Permute (T[i] , T[Pos_Min])Fin SiFin Pour2) Fin tri_Select

Fonction Cherche0) Fonction Cherche_Min (T : Vect ; départ, N : Entier ) : Entier1) Min ← T[départ]2) Indice ← Départ3) Pour j de départ + 1 à N FaireSi T[j] < Min Alors Min ← T[j]indice ← jFin SiFin Pour4) Cherche_Min ← indice5) Fin Cherche_Min

Procédure Permute0) Procédure Permute (VAR a, b : Réel)1) temp ← aa ← bb ← temp2) Fin Permute

FUNCTION Cherche_Min (T : Vect ; depart, N : Integer) : Integer ;VARj, indice : Integer ;Min : Real ;BEGINMin := T[depart] ;Indice := depart ;For j := depart + 1 To N DoBeginIf (T[j] < Min) Then BeginMin := T[j] ;indice := j ;End ;End ;Cherche_Min := indice ;End ;PROCEDURE Permute (VAR a, b : Real ) ;VAR Temp : Real ;BEGINtemp := a ;a := b ;b := temp ;END ;PROCEDURE Tri_Select (VAR T : Vect ; N : Integer ) ;VARi, Pos_Min : Integer ;BEGINFor i := 1 To N-1 DoBeginPos_Min := Cherche_Min (T, i, N) ;If Pos_Min <> i Then Permute (T[i] , T[Pos_Min]) ;

Résumer sur les tris

Page 2: Resumer sur les tris

End ;END ;

Tri à bulles

0) Procédure Bulles (VAR T : Vect ; N : Entier)1) Répéteréchange ← FauxPour i de 1 à N-1 FaireSi (T[i] > T[i +1] ) Alors Proc Permute (T[i], T[i+1])échange ← VraiFin SiFin PourJusqu'à échange = Faux2) Fin Bulles

Procédure Permute0) Procédure Permute (VAR a, b : Réel)1) temp ← aa ← bb ← temp2) Fin Permute

PROCEDURE Permute (VAR a, b : Real ) ;VAR Temp : Real ;BEGINtemp := a ;a := b ;b := temp ;END ;

PROCEDURE Bulles (VAR T : Vect ; N : Integer ) ;VARi : Integer ;echange : Boolean ;BEGINRepeatechange := False ;For i := 1 To N-1 DoIf (T[i] > T[i +1] ) ThenBeginPermute (T[i], T[i+1]) ;echange := True ;End ;Until (echange = False);END ;

Tri par insertion

0) Procédure T_Insertion (VAR T : Vect ; N : Entier)1) Pour i de 2 à N FaireTmp ← T[i]j ← iProc Décaler (T, j, Tmp)T[j] ← TmpFin Pour2) Fin T_InsertionProc Décaler0) Procédure Décaler (VAR T : Vect; VAR p : Entier ; temporaire :

PROCEDURE Decaler (VAR T : Vect; VAR p : Integer ; temporaire : Integer) ;BEGINWhile T[p -1] > Temporaire DoBeginT[p] := T[p-1] ;p := p -1 ;End ;END ;PROCEDURE T_Insertion (VAR T : Vect ; N : Integer) ;

Page 3: Resumer sur les tris

Réel)1) Tant que (T[p -1] > Temporaire) FaireT[p] ← T[p-1]p ← p -1Fin tant que2) Fin Décaler

VAR i, j: Integer ;tmp : Real ;BEGINFor i:= 2 To N DoBeginTmp := T[i] ;j := i ;Decaler (T, j, Tmp) ;T[j] := Tmp ;End ;END ;

Tri Shell

0) Procédure Shell (N : entier; VAR T :Vect)1) P ← 1Tant Que (P< N) FaireP ←(3* P +1)Fin Tant Que2) Tant Que (P ≠1) FaireP ← P DIV 3Pour c de P + 1 à N FaireSi (T[c] < T[c-p]) AlorsTmp ← T[c]pos ← cTant Que (pos > P-1) et (T[pos-P]>tmp) FaireT[pos]← T[pos-P]pos←pos-PFin Tant queT[pos]← TmpFin SiFin PourFin Tant Que3) Fin Shell

PROCEDURE Shell (VAR T : Vect ; N : Integer) ;VARP, c, pos : Integer ;Tmp : Real ;BEGINP := 1 ;While ( P < N) DoBeginp := (3* P +1) ;End ;While (P < > 1) DoBeginP := P DIV 3 ;For c := P + 1 To N DoBeginIf (T[c] < T[c-p]) ThenBeginTmp := T[c] ;pos := c ;While (pos > P-1) AND (T[pos-P]> tmp) DoBeginT[pos] := T[pos-P] ;pos := pos-P ;End ; {End While }T[pos] := Tmp ;End ; {End If }End ; {End For}End ; {End While }

Page 4: Resumer sur les tris

END ;Tri par fusion

0) Procédure Fusionner (VAR T : Vect ; N : Entier ; T1, T2 : Vect2 ; N1, N2 : Entier)1) c ← 02) c1← 13) c2 ← 14) Répéterc←c+1Si (T1 [c1] < T2 [c2])AlorsT[c] ← T1 [c1]C1←c1+1SinonT[c] ← T2 [c2]c2←c2+1)Fin SiJusqu'à (c1 > N1) OU (c2 > N2)5) Si (c1 > N1) AlorsPour i de c2 à N2 FaireT[c] ← T2[i]c←c+1)Fin PourSinonPour i de c1 à N1 FaireT[c] ← T1[i]c←c+1Fin PourFin Si6) Fin Fusionner

PROCEDURE Fusionner (VAR T : Vect ; N : Integer ; T1, T2 : Vect2 ; N1, N2 : Integer) ;VARc, c1, c2, i : Integer ;BEGINc := 0 ; c1 := 1; c2 := 1 ;RepeatIf (T1 [c1] < T2 [c2]) Then BeginT[c] := T1 [c1] ;Inc (c1, 1) ;EndElseBeginT[c] := T2 [c2] ;Inc (c2, 1) ;End ;Inc (c, 1) ;Until (c1 > N1) OR (c2 > N2) ;If (c1 > N1) ThenFor i := c2 TO N2 DoBeginT[c] := T2[i] ;Inc (c, 1) ;EndElseFor i := c1 TO N1 DoBeginT[c] := T1[i] ;Inc (c, 1) ;End ;END ;