0% ont trouvé ce document utile (0 vote)
5 vues12 pages

Comparaison des algorithmes de tri

Ce rapport compare les algorithmes de tri par insertion et Shell sort, en présentant leur pseudo-code, leur complexité théorique et des implémentations en C. Les résultats expérimentaux montrent que Shell sort est significativement plus efficace, en particulier pour les grandes tailles de tableaux, avec une consommation d'énergie inférieure. La conclusion recommande l'utilisation de Shell sort pour des tableaux de taille supérieure à 1000 et le tri par insertion pour des petits tableaux ou des données presque triées.

Transféré par

patrickalfonce27
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues12 pages

Comparaison des algorithmes de tri

Ce rapport compare les algorithmes de tri par insertion et Shell sort, en présentant leur pseudo-code, leur complexité théorique et des implémentations en C. Les résultats expérimentaux montrent que Shell sort est significativement plus efficace, en particulier pour les grandes tailles de tableaux, avec une consommation d'énergie inférieure. La conclusion recommande l'utilisation de Shell sort pour des tableaux de taille supérieure à 1000 et le tri par insertion pour des petits tableaux ou des données presque triées.

Transféré par

patrickalfonce27
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Rapport de Devoir INF 321

Comparaison des algorithmes de tri :

Tri par Insertion et Shell Sort

DIZE TCHEMOU MIGUEL CAREY

Matricule : 23V2287

Université de Yaoundé I

October 28, 2025


Contents

1
Chapter 1

Introduction

Ce rapport présente une étude complète et comparative des deux algorithmes de tri : le
tri par insertion et le Shell sort. Dans le cadre du cours INF 321 à l'Université de
Yaoundé I, nous allons :

ˆ Présenter le pseudo-code de chaque algorithme.

ˆ Identier l'instruction baromètre.

ˆ Analyser la complexité théorique en temps (pire, moyen, meilleur cas).

ˆ Implémenter les algorithmes en langage C.

ˆ Intégrer la mesure du temps d'exécution et une estimation de la consommation


énergétique.
ˆ Réaliser une étude comparative expérimentale et théorique.

L'objectif est de comprendre les diérences de performance entre ces deux algorithmes
de tri par insertion améliorée.

2
Chapter 2

Pseudo-code des algorithmes

2.1 Tri par Insertion

1 TRI_INSERTION (T , n)
2 pour i de 1 n -1
3 cl T [i]
4 j i - 1
5 tant que j 0 et T[j] > c l
6 T [j +1] T[ j]
7 j j - 1
8 fin tant que
9 T[ j +1] cl
10 fin pour
Listing 2.1: Pseudo-code du tri par insertion

2.2 Shell Sort

1 SHELL_SORT (T , n)
2 h 1
3 tant que h < n /3
4 h 3* h + 1
5 fin tant que
6
7 tant que h 1
8 pour i de h n -1
9 cl T[i ]
10 j i
11 tant que j h et T[j -h ] > c l
12 T[ j] T[j -h]
13 j j - h
14 fin tant que
15 T [j] cl
16 fin pour
17 h h // 3
18 fin tant que

3
Devoir INF 321 DIZE TCHEMOU MIGUEL CAREY

Listing 2.2: Pseudo-code du Shell sort (séquence de Knuth)

4
Chapter 3

Instruction baromètre et complexité

3.1 Tri par Insertion

3.1.1 Instruction baromètre

L'instruction baromètre est :


Comparaison T[j] > clé dans la boucle interne.
Elle est exécutée à chaque itération de la boucle tant que.

3.1.2 Complexité

Soit n la taille du tableau.

ˆ Meilleur cas (tableau déjà trié) :


n−1
X
1=n−1 ⇒ O(n)
i=1

ˆ Pire cas (tableau inversé) :


n−1
X n(n − 1)
i= ⇒ O(n2 )
i=1
2

ˆ Cas moyen : environ n2


4
comparaisons ⇒ O(n2 )

3.2 Shell Sort

3.2.1 Instruction baromètre

Comparaison T[j-h] > clé dans la boucle interne.

3.2.2 Complexité

La complexité dépend de la séquence d'incréments. Avec la séquence de Knuth (hk+1 =


3hk + 1), la complexité est :

5
Devoir INF 321 DIZE TCHEMOU MIGUEL CAREY

ˆ Pire cas : O(n3/2 )

ˆ Cas moyen : O(n4/3 ) à O(n log2 n) selon les analyses

ˆ Meilleur cas : O(n log n)

Remarque : Shell sort est une généralisation du tri par insertion avec des sauts,
réduisant le nombre d'opérations coûteuses.

6
Chapter 4

Implémentation en C

4.1 Tri par Insertion

1 # include < stdio .h >


2 # include < stdlib .h >
3 # include < time .h >
4
5 void tri_insertion ( int T [] , int n) {
6 int i , j , cle ;
7 for (i = 1; i < n ; i ++) {
8 cle = T[i ];
9 j = i - 1;
10 while (j >= 0 && T [j] > cle ) { // Instruction b a r o m t r e
11 T [j + 1] = T[ j ];
12 j - -;
13 }
14 T[ j + 1] = cle ;
15 }
16 }
17
18 int main () {
19 int n = 10000;
20 int *T = ( int *) malloc (n * sizeof ( int )) ;
21
22 // Remplissage a l a t o i r e
23 for ( int i = 0; i < n; i ++) T[i ] = rand () % 100000;
24
25 clock_t debut = clock () ;
26 tri_insertion (T , n) ;
27 clock_t fin = clock () ;
28
29 double temps = (( double ) ( fin - debut )) / CLOCKS_PER_SEC ;
30 printf (" Temps tri insertion : %.6 f s\n " , temps );
31
32 free (T );
33 return 0;
34 }

7
Devoir INF 321 DIZE TCHEMOU MIGUEL CAREY

Listing 4.1: Tri par insertion en C avec mesure de temps

4.2 Shell Sort

1 void shell_sort ( int T [] , int n) {


2 int h = 1;
3 while ( h < n /3) h = 3* h + 1;
4
5 while ( h >= 1) {
6 for ( int i = h ; i < n; i ++) {
7 int cle = T[ i ];
8 int j = i ;
9 while (j >= h && T[j - h ] > cle ) { // Instruction
barom tre
10 T[ j] = T[j - h ];
11 j -= h;
12 }
13 T [j] = cle ;
14 }
15 h /= 3;
16 }
17 }
Listing 4.2: Shell sort en C avec mesure de temps

4.3 Mesure de l'énergie (estimation)

Nous utilisons une approximation simple basée sur le nombre d'opérations :

8
Chapter 5

Étude comparative

5.1 Protocole expérimental

ˆ Tailles testées : n = 1000, 5000, 10000, 20000

ˆ 10 exécutions par taille, moyenne prise

ˆ Données : aléatoires, triées, inversées

ˆ Mesures : temps (s), comparaisons, aectations, énergie estimée

5.2 Résultats expérimentaux (exemple)

Table 5.1: Temps moyen (s) pour données aléatoires


n Tri Insertion Shell Sort
1000 0.008 0.001
5000 0.185 0.008
10000 0.742 0.018
20000 2.981 0.042

5.3 Analyse

ˆ Tri Insertion : O(n2 ) conrmé expérimentalement (temps ×4 quand n × 2).

ˆ Shell Sort : croissance beaucoup plus lente, proche de O(n1.3 ) à O(n log2 n).

ˆ Énergie : proportionnelle au nombre de cycles ⇒ Shell sort consomme 10 à 50Ö


moins d'énergie.
ˆ Cas particuliers :

 Données presque triées : Insertion très rapide (O(n))


 Shell sort reste performant même sur données inversées

9
Devoir INF 321 DIZE TCHEMOU MIGUEL CAREY

5.4 Conclusion théorique

Le Shell sort est une amélioration signicative du tri par insertion grâce à :
ˆ La réduction des déplacements coûteux via les incréments

ˆ Une complexité sous-quadratique

ˆ Une meilleure localité de cache

Il est particulièrement adapté aux tableaux de taille moyenne à grande.

10
Chapter 6

Conclusion générale

Ce devoir a permis de :
ˆ Comprendre en profondeur deux algorithmes de tri classiques

ˆ Maîtriser l'analyse de complexité théorique et expérimentale

ˆ Implémenter des mesures de performance (temps, énergie)

ˆ Valider les théories par l'expérimentation

Recommandation : Utiliser Shell sort pour n > 1000, et tri par insertion pour
petits tableaux ou données presque triées.

11

Vous aimerez peut-être aussi