Algorithmes de tri
Notions et points abordés :
void tri( int t[], int n )
qui, étant donné un tableau t
à n
élements
, ordonne ses éléments par
ordre croissant.
Exemple : le tableau {
3, 1, 2, 7, 11, 24, 2 }
à 7 éléments devient
{ 1, 2, 2, 3, 7, 11, 24 }
. Pour chacun des exercices, il faut
répondre aux questions et en déduire une
définition de la fonction tri
.i
-ième étape
le i
-ième élément à
la bonne place.void insere( int t[], int i )
qui étant
donné un tableau t
et un indice i
valide du tableau t
, insère
l'élément t[i]
en bonne place dans la
partie de tableau t[0:i-1]
(on écrira les
pré- et post-conditions). i
-ième étape, on sélectionne donc
le plus petit élément dans la partie de tableau t[i:n-1]
et on l'échange avec t[i]
. void selectionne( int t[], int n, int i )
qui
cherche l'indice du plus petit élément dans t[i:n-1]
et échange la valeur de cet élement avec celle de t[i]
.
Tri bulle
t[i]
et t[i+1]
d'un tableau et d'effectuer une permutation si t[i]
> t[i+1]
. On continue de trier jusqu'à ce qu'il n'y
ait plus de
permutation. int remonte_bulle( int t[], int n )
qui
effectue une permutation de t[i]
avec t[i+1]
si ces éléments sont dans le désordre et ceci pour
chaque indice i
depuis 0
jusqu'à n-2
,
et retourne 1
si une permutation a eu lieu, 0
sinon.
Tri fusion
void fusionne( int t[], int n )
qui,
étant donné un tableau t
à n
éléments où n
est pair, interclasse
les éléments des moitiés t[0:n/2]
et
t[n/2+1:n-1]
que l'on supposera triées. Cette
fonction procède par effet de bord. Après
exécution de cette fonction le tableau t
est
trié.
Tri rapide
x
sa valeuri
particulier
: i
ait pour valeur x
t[0:i-1]
aient une valeur inférieure à x
t[i+1:n-1]
aient une valeur
supérieure à x
t[0:i-1]
et t[i+1:n-1]
.int partitionne( int t[], int imin,
int imax, int j)
qui, étant donné deux indices imin
et imax
définissant une partie de tableau t[imin:imax]
,
et un indice j
entre imin
et imax
, réalise les permutations
nécessaires pour que, en notant x
, la valeur t[j]
et i
, le résultat de la fonction
: i
ait pour valeur x
t[imin:i-1]
aient une valeur inférieure à x
t[i+1:imax]
aient une valeur
supérieure à x
.