Algorithme : Tri RAPIDE du tableau des entiers

Bac SC 01-09-26
36 1

Plan de tutoriel

1- Principe du tri de RAPIDE

2- Algorithme du tri de RAPIDE

3- Programme Python

 

 

Principe du tri de Rapide

Le tri rapide (Quick Sort) est un algorithme de tri basé sur le principe « diviser pour régner ». Son objectif est de trier un tableau dans l’ordre croissant en le divisant progressivement en plusieurs parties plus petites.

Tout d’abord, l’algorithme choisit un élément du tableau appelé pivot. Dans votre programme, le pivot est le premier élément de la partie du tableau à trier, c’est-à-dire t[g].

Ensuite, l’algorithme effectue une partition du tableau autour du pivot. Il recherche, à partir de la gauche, un élément qui est supérieur ou égal au pivot et, à partir de la droite, un élément qui est inférieur au pivot. Lorsque ces deux éléments sont trouvés, ils sont échangés.

Après les échanges, le pivot est placé à sa position définitive. Tous les éléments situés à gauche du pivot sont alors inférieurs ou égaux au pivot, tandis que les éléments situés à droite sont supérieurs ou égaux au pivot.

L’algorithme recommence ensuite le même processus sur les deux parties obtenues : la partie gauche du pivot et la partie droite du pivot. Cette opération est réalisée de manière récursive, jusqu’à ce que chaque partie ne contienne plus qu’un seul élément ou aucun élément.

Ainsi, le tri rapide permet de transformer progressivement un tableau non trié en un tableau trié. En moyenne, sa complexité est de O(n log n), ce qui en fait un algorithme de tri généralement très efficace.

 

Algorithme du tri de RAPIDE

Dans cet algorithme, On va utiliser deux fonctions et deux procédures :

- la fonction saisie

- la procédure remplir

- la fonction tri_rapide

- la procédure tri

 

Algorithme du programme Principal

Le rôle du programme principal est de coordonner les différentes étapes du tri rapide : saisir la taille du tableau, remplir le tableau, lancer le tri, puis afficher le résultat.

1- Saisie de la taille du tableau

La fonction saisie() demande à l'utilisateur le nombre n d'éléments à traiter.

2- Remplissage du tableau

La fonction remplir(t, n) permet de saisir les n valeurs entières du tableau.

3- Tri du tableau

L'instruction tri(t, 0, n - 1) lance l'algorithme du tri rapide (Quick Sort) sur l'ensemble du tableau, de l'indice 0 jusqu'à l'indice n-1.

3- Affichage du tableau trié

Enfin, la fonction afficher(t, n) affiche les éléments du tableau après leur classement dans l'ordre croissant.

Déclaration des objets

Objet Type / Nature
n entier
t tableau des entiers

 

La fonction saisie

La fonction saisie() permet de saisir et de contrôler le nombre d’éléments n du tableau. Elle demande à l’utilisateur de donner une valeur comprise entre 2 et 14.

Déclaration des objets

Objet Type / Nature
n entier

 

La procédure remplir

La procédure remplir permet de remplir le tableau t avec n entiers saisis par l’utilisateur.

Déclaration des objets

Objet Type / Nature
binaire chaîne des caractères

 

La procédure tri

La procédure tri(t, g, d) a pour rôle de trier récursivement une partie du tableau t dans l’ordre croissant, en utilisant l’algorithme du tri rapide (Quick Sort).

Rôle de la procédure tri

t : tableau contenant les entiers à trier.

g : indice de début de la partie du tableau à trier.

d : indice de fin de cette partie.

La procédure fonctionne ainsi :

1- Définir les limites de la partie à trier

index_gauche = g et index_droit = d indiquent les bornes de la zone de travail.

2- Vérifier qu'il reste au moins deux éléments

La condition index_gauche < index_droit permet de poursuivre le tri uniquement si la partie contient plusieurs éléments. 3- Effectuer une partition

tri_rapide(t, index_gauche, index_droit) réorganise les éléments autour d'un pivot et retourne sa position index.

4- Trier la partie gauche

L'appel : tri(t, index_gauche, index - 1) trie récursivement les éléments situés avant le pivot.

5- Trier la partie droite

L'appel : tri(t, index + 1, index_droit) trie récursivement les éléments situés après le pivot.

Déclaration des objets

Objet Type / Nature
index_gauche entier
index_droit entier
index entier

 

La fonction tri_rapide

La fonction tri_rapide(t, g, d) a pour rôle de réaliser la partition d'une partie du tableau dans l'algorithme du tri rapide. Elle utilise le premier élément t[g] comme pivot, réorganise les éléments autour de ce pivot, puis retourne sa position définitive.

Rôle de la fonction tri_rapide

t : tableau d'entiers à trier.

g : indice de début de la partie à trier.

d : indice de fin de la partie à trier.

l : indice qui parcourt le tableau de gauche vers la droite.

m : indice qui parcourt le tableau de droite vers la gauche.

t[g] : élément choisi comme pivot.

Fonctionnement

1- Initialisation des indices

l commence à g + 1 et m commence à d. Les deux indices vont parcourir la partie du tableau située autour du pivot.

2- Recherche à gauche

L'indice l avance tant que les éléments rencontrés sont inférieurs au pivot.

3- Recherche à droite

L'indice m recule tant que les éléments rencontrés sont supérieurs ou égaux au pivot.

4- Échange des éléments

Lorsque l trouve un élément trop grand et m trouve un élément trop petit, les deux éléments sont échangés. Cela permet de placer les petites valeurs à gauche et les grandes valeurs à droite.

5- Placement du pivot

Lorsque les recherches sont terminées, le pivot est échangé avec t[m] s'il est nécessaire. Le pivot se retrouve alors à sa position définitive.

6- Retour de la position du pivot

retourner m retourne l'indice où le pivot a été placé. La procédure tri() utilise ensuite cette position pour trier récursivement les deux parties du tableau.

Déclaration des objets

Objet Type / Nature
l entier
m entier
aux entier

 

La procédure afficher

La procédure afficher(t, n) permet d’afficher les n premiers éléments du tableau t.

Elle parcourt les cases du tableau à l’aide de la boucle for, de l’indice 0 jusqu’à n-1. À chaque passage, l’instruction print(t[i]) affiche la valeur contenue dans la case t[i].

Déclaration des objets

Objet Type / Nature
i entier

 

Programme en Python

Exécution du programme

1 commentaire

Image
Brock 01-09-2626

Valuable information. Lucky me I found your web site unintentionally, and I'm stunned why this twist of fate did not came about in advance! I bookmarked it.

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info