« Programmation algorithmique/Tris » : différence entre les versions

Contenu supprimé Contenu ajouté
JulienCo (discussion | contributions)
→‎Tri par sélection : supression pour cause de doublon dans la page
JulienCo (discussion | contributions)
→‎Tri rapide : mise en forme de l'algo + ajout d'infos
Ligne 61 :
 
 
FONCTION Partitionner ( A : tableau [1..n] d’entiersd’Entiers, p :entier Entier, r : entierEntier) :entier Entier
Var: x, i, j, temp: entierEntier
bool: booleenBooleen
Début
début
x := A[p]
i := p-1
j := r+1
bool := vrai
tant Tant que (bool) faireFaire
répéter Répéter j := j-1 jusquJusqu'à A[j] <= x
répéter Répéter i := i+1 jusquJusqu'à A[i] >= x
bool := faux
si Si i < j alors
temp := A[i]
A[i] := A[j]
A[j] := temp
bool := vrai
Sinon
Retourner j
Fin si
fsi
Fin tant que
ftq
Fin
PROCÉDURE Tri_rapide(A : tableau [1..n], p : entier, r : entier)
Var q : entierEntier
Début
Si p < r alors
q := Partitionner(A,p,r)
Tri_rapide(A,p,q)
Tri_rapide(A,q+1,r)
Fsi
Fin
 
*'''Complexité en espace :''' En raison des appels récursif, on a besoin d'une pile dont la taille est en <math>O(log(n))</math>.
*'''Complexité en temps :''' <math> O(n.log(n))</math> en moyenne, <math> O(n^{2})</math> dans le pire cas.
*'''Nom anglais :''' ''quicksort''.
 
=== Tri par base ===