Lycée Majida Boulila Sfax
Matière : Informatique

E-Mail : Zouheir.dammak@Edunet.tn

Tél (Dom) : (04) 615 691 Sfax - Tunisie

Professeur informatique

Dammak Zouheir

Date de création 29 Mars 2001

Exercice algorithmique
Méthode du tri par séléction
Énoncé

Écrire une marche à suivre qui permet de tirer un tableau T
à N éléments en ordre décroissant. (N, T sont des données)

I) Préanalyse :

Données : 
..............- Le nombre d'éléments de T  (N=6);
..............- Un tableau T à N éléments de types entiers ;
T 17 12 50 10 33 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

 

Résultat :

Un tableau trié

T 50 33 17 15 12 10 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

 

Les étapes de résolution :

Etape 1 :

a) On se pointe à la 1ère case du tableau et on parcourt la totalité de T pour repérer l'indice

du maximum :

                 
T 17 12 50 10 33 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

La recherche de la première position du maximum donne ppm = 3

b) On compare ce maximum T[posmax] avec T[1]. S'ils ne sont pas dans le bon ordre

on les permute :

Ici T[posmax]=50 > T[1] = 17 d'où permut ( T[posmax] , T[1] )

d'où le résultat suivant :

                   
T 50 12 17 10 33 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

Le sous tableau de T allant de 2 à n est à priori non trié, On applique a) et b)

et ainsi de suite jusqu'à l'avant dernière (n-1) .

Etape 2 :

                 
T 50 12 17 10 33 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

La recherche de la première position du maximum donne ppm = 5

T[posmax]=33 > T[2] = 12 d'où PERMUT ( T[ppm] , T[2] )

d'où le résultat suivant :

                   
T 50 33 17 10 12 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

 

Etape 3 :

                   
T 50 12 17 10 12 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

La recherche de la première position du maximum donne ppm = 3

T[posmax]=17 > T[3] = 17 est Faux d'où pas de permutation

d'où le résultat suivant :

                   
T 50 33 17 10 12 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

Etape 4 :

                 
T 50 12 17 10 12 15 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

La recherche de la première position du maximum donne ppm = 6

T[posmax]=15 > T[4] = 10 d'où PERMUT ( T[posmax] , T[4] )

d'où le résultat suivant :

                   
T 50 33 17 15 12 10 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

Etape 5 :

                   
T 50 12 17 15 12 10 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

La recherche de la première position du maximum donne ppm = 5

T[posmax]=12 > T[5] = 12 est Faux d'où il n'aura pas de permutation

d'où le résultat suivant :

                     
T 50 33 17 15 12 10 ? ? ? ?
1
1
2
3
4
5
N=6
7
8
9
NMAX=10

.

..............................................................................................Les noms des modules (sous-programmes)

Saisir (Lire) le nombre d'éléments de T .................................................... Lecture(N)

Remplir le tableau T par N éléments ........................................................ Remplir(N,T)

Rechercher la première position du maximum............................................Premposmax(N,T)

Permuter le contenu de deux variables..................................................... Permut(A,B)

Afficher le tableau T après insertion..........................................................Affiche(N,T)

II) Analyses & Algorithmes :

1) Analyse du programme principal

Nom : Tri_methode_Par_selection
S.
LDE
O.U.

5

1

3

2

4

Résultat : Affiche ( N , Tr )

N = Lecture( N )

Tr= Tri_selection ( N , Ti)

Ti = Remplir ( N , Ti )

Fin Tri_methode_Par_selection

N

Tr

Ti

 

 

Tableau de déclaration des objets :

O.U.
Code
Type/Nature
Rôle
N
N
Entier
Le nombre d'éléments du tableau T
Ti
T
Tab
Tableau des valeurs à l'état initial
Tr
T
Tab
Tableau trié
Lecture
Lecture
Procédure
Lecture de N
Remplir
Remplir
Procédure
Remplit le tableau T par des valeurs
Tri_selection
Tri_selection
Procédure
Trie le tableau T en ordre décroissant
Affiche
Affiche
Procédure
Affiche les valeurs du tableau après le tri

Nouveau Type ................Tab = Tableau [1..NMax] d'entier

NMax est une constante est égale à 10

Algorithme du programme principal :

0- Début Tri_methode_Par_selection
1- Lecture( N )
2- Remplir ( N , T )
3- Tri_selection ( N , P )
4- Affiche ( N , T )
5- Fin Tri_methode_Par_selection

2) Analyse de la procédure Lecture

DEF PROC Lecture (Var N : Entier)
S.
LDE
O.U.

 

Résultat : N
1
N= [ ] Répeter

N=donner

Jusqu'à N dans [ 1 .. Nmax ]

2
Fin Lecture
Algorithme de la procédure Lecture :
0- DEF PROC Lecture (Var N : Entier)
1- Répeter
 
..........Lire( N )
  Jusqu'à N dans [ 1 .. Nmax ]
2- Fin Lecture

3) Analyse de la procédure Remplir

DEF PROC Remplir ( N : Entier ; Var T: Tab )
S.
LDE
O.U.

 

Résultat : T

 

I

 

1
T= [ ] Pour I de 1 à N Répéter

...................T[I]=donnée

..........Fin Pour

I = Compteur

2

Fin Remplir

Tableau de déclaration des objets :

O.U.
Code
Type/Nature
Rôle
I
I
Entier
Compteur
Algorithme de la procédure Remplir :
0- DEF PROC Remplir ( N : Entier ; Var T : Tab )
1- Pour I de 1 a N Répéter
 
.......... Lire( T[I] )
 

Fin Pour

2- Fin Remplir

 

4) Analyse de la procédure Tri_selection

DEF PROC Tri_selection ( N : Entier ; Var T : Tab )
S.
LDE
O.U.

 

Résultat : T

I

ppm

1
T= [ ] Pour I de 1 à N Répéter
  ..........[ppm<-- premposmax ( I, N, T )]
..................Si T[ppm] <> T[I]

...........................Alors

  ....................................Permut ( T[ppm], T[I] )
  ..................FinSi

..........Fin Pour

I = Compteur

2

Fin Tri_selection

 

Tableau de déclaration des objets :

O.U.
Code
Type/Nature
Rôle
I
I
Entier
Compteur
ppm
ppm
Entier
Contiendra la première position du maximum
Tr
T
Tab
Tableau trié
Permut
Permut
Procédure
Permute le contenu de deux variables
premposmax
premposmax
Fonction Entier
Renvoie la première position du maximum
Algorithme de la Procédure Tri_selection :
0-

DEF PROC Tri_selection ( N : Entier ; Var T : Tab )

1
Pour I de 1 à N Répéter
.......ppm<-- premposmax ( I, N, T )