Informatique et Sciences du Numérique
1
6 : LES ALGORITHMES DE TRI
Représentation de l’information
Algorithmique
Langages et programmation
Architectures matérielles
CONNAISSANCES ABORDEES
Algorithme simple : Comprendre un algorithme et expliquer ce qu'il fait
Algorithme simple : Concevoir un algorithme
Algorithme simple : Programmer un algorithme
Algorithme plus avancé : S'interroger sur l'efficacité d'un algorithme
Correction d’un programme : Mettre au point un programme en le testant, l’instrumentant
PROBLEMATIQUE
Comment ranger des données pour faciliter leur accès futur ?
CONDITIONS DE DEROULEMENT DE L’ACTIVITE
Phases de
travail Objectifs Activités
A) Mise en
situation
Présenter l’intérêt de trier des informations
Trier et ordonner des cartes à jouer
B) Activités
Etre capable de programmer un algorithme à partir
de son pseudo-code
Tester la validité d’un programme
Comparer l’efficacité de plusieurs algorithmes
réalisant la même fonction
Réalisation et test de l’algorithme de tri
par sélection.
C) Synthèse
Rendre compte de manière individuelle de la
validité de son programme
Synthèse en groupe entier sur l’efficacité
des différents algorithmes de tri.
LOGICIEL UTILISE :
- Compilateur C DevC++ 4.9.9.2
DUREE :
1 Séance
Informatique et Sciences du Numérique
2
1. MISE EN SITUATION : LES JOUEURS DE CARTES
Lorsqu’un joueur de tarots reçoit ses 18 cartes, il va tout naturellement ordonner ses cartes dans l’ordre croissant
(notamment les atouts). Sans le savoir, il adopte une certaine méthode de rangement : son cerveau procède à un
algorithme de tri.
Comment procède-t-il exactement pour organiser le rangement de ses cartes ?
ACTIVITE : Prenez chacun aléatoirement une vingtaine de cartes. Vous devez les classer sans s’occuper des
couleurs de l’AS (valeur 1) jusqu’au ROI (EQUIVALENT A LA VALEUR 13).
Essayer sous forme d’un pseudo-code de décrire la méthode que vous utilisez intuitivement pour réaliser ce
classement.
A partir des explications de deux types de tri (insertion et sélection), essayer de repérer si votre méthode
appartient à l’une d’entre elle.
TRI PAR INSERTION
L'algorithme principal du tri par insertion est un algorithme qui insère un élément dans une liste d'éléments déjà
triés (par exemple, par ordre croissant).
Imaginez un joueur de cartes qui dispose de cartes numérotées. Il a des cartes triées de la plus petite à la plus
grande dans sa main gauche, et une carte dans la main droite. Où placer cette carte dans la main gauche de façon
à ce qu'elle reste triée ? Il faut la placer après les cartes plus petites, et avant les cartes plus grandes.
Par exemple, si la main gauche est (1 3 6 8), et que j'ai la carte 5 dans la main droite, il faut la placer après (1 3) et
avant (6 8). Si l'on fait ça, on se retrouve avec la main gauche (1 3 5 6 8), qui est encore triée.
Pour trier entièrement un ensemble de cartes dans le désordre, il suffit alors de placer toutes ses cartes dans la
main droite (la main gauche est donc vide), et d'insérer les cartes une à une dans la main gauche, en suivant la
procédure ci-dessus.
Au départ, la main gauche est vide, donc elle bien triée.
À chaque fois que l'on insère une carte depuis la main droite vers la main gauche, la main gauche reste triée, et la
main droite (l'ensemble des cartes non triées) perd une carte. Ainsi, si la main droite comprenait au départ N
cartes, en N insertions, on se retrouve avec O carte dans la main droite, et N cartes, triées, dans la main gauche :
on a bien trié notre ensemble de cartes.
Informatique et Sciences du Numérique
3
TRI PAR SELECTION
L'idée est simple : rechercher le plus grand élément (ou le plus petit), le placer en fin de tableau (ou en début),
recommencer avec le second plus grand (ou le second plus petit), le placer en avant-dernière position (ou en
seconde position) et ainsi de suite jusqu'à avoir parcouru la totalité du tableau.
Cette décision est importante car à chaque fois que je déplacerai un élément en fin de tableau, je serai certain
qu'il n'aura plus à être déplacé jusqu'à la fin du tri.
Regardons ensemble ce que donne l'algorithme appliqué à un exemple (avec recherche du plus grand élément) :
1. Soit le tableau d'entiers suivant :
6
2
8
1
5
3
7
9
4
0
2. L'élément le plus grand se trouve en 7ème position (si on commence à compter à partir de zéro) :
6
2
8
1
5
3
7
9
4
0
3. On échange l'élément le plus grand (en 7ème position) avec le dernier :
6
2
8
1
5
3
7
0
4
9
4. Le dernier élément du tableau est désormais forcément le plus grand. On continue donc en considérant le
même tableau, en ignorant son dernier élément :
6
2
8
1
5
3
7
0
4
9
5. De même, on repère l'élément le plus grand en ignorant le dernier et on l'échange avec l'avant dernier :
6
2
4
1
5
3
7
0
8
9
6. Et ainsi de suite, en ignorant à chaque fois les éléments déjà triés (en gras).
Informatique et Sciences du Numérique
4
7. Et on a enfin trié notre tableau !
On sait que notre tableau est trié lorsque le nombre d'éléments non triés est égal à 1.
2. ACTIVITE : LE TRI PAR SELECTION
OBJECTIF
Réaliser un programme permettant de générer (et afficher à l’écran) un tableau de N = 20 nombres aléatoires
compris entre 0 et 255.
Puis Implémenter un algorithme de tri par sélection (voir pseudo code) et afficher les valeurs par ordre croissant
PSEUDO CODE
N : Nombre de valeurs à trier
/* si le tableau commence à 0 faire pour( i de 0 à N-2 …)
Informatique et Sciences du Numérique
5
RESULTAT ATTENDU :
3. ACTIVITE : LE TRI PAR INSERTION
A partir des explications précédentes, élaborer un pseudo-code qui permettra à un futur programmeur de coder
l’algorithme du tri par insertion sur un tableau de N = 20 entiers.
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !