Algorithmes de tri : Introduction et exemples, Lecture notes of Data Structures and Algorithms

algorithms and complexity full course

Typology: Lecture notes

2022/2023

Available from 12/24/2023

racim-mohamed-fethallah
racim-mohamed-fethallah 🇩🇿

5 documents

1 / 30

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Les Tris
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e

Partial preview of the text

Download Algorithmes de tri : Introduction et exemples and more Lecture notes Data Structures and Algorithms in PDF only on Docsity!

Les Tris

Trier les données

  • Organiser une collection d'objets selon une relation d’ordre déterminée. Exemple: - Ordre croissant, décroissant des valeurs numériques, - Ordre croissant des mots, …
  • Pourquoi trier?
    • Faciliter la recherche (recherche dichotomique)
    • Faciliter la gestion en général

Tri par sélection

  • Déterminer la position du plus petit élément p à partir de i
  • Échanger l’élément p avec i
  • Continuer à partir de i+

2, 56, 4, -7, 0, 78, -45, 10 -45, 56, 4, -7, 0, 78, 2, 10 -45, 56, 4, -7, 0, 78, 2, 10 -45, -7, 4, 56, 0, 78, 2, 10 -45, -7, 4, 56, 0, 78, 2, 10 -45, -7, 0, 4, 56, 78, 2, 10 …

Tri par sélection

Algorithme

pour i :=1 à n-1 faire

p=minimum(T, i, n) ;

si (i ≠ p) alors échanger (T[i], T[p])

fsi;

fait ;

Tri par insertion

Algorithme

Pour i2 à n faire

ji; tantque (j>1) et (T[j]<T[j-1]) faire échanger(T[j], T[j-1]); jj-1; fait; fait;

Tri à Bulles

  • Comparer 2 à 2 les éléments adjacents
  • Les échanger s'ils ne sont pas ordonnés

Comme les bulles, les plus grands éléments remontent en fin de liste. 2, 56, 4, -7, 0, 78, -45, 10 2, 4, -7, 0, 56, -45, 10, 78 2, -7, 0, 4, -45, 10, 56, 78 -7, 0, 2, -45, 4, 10, 56, 78 -7, 0, -45, 2, 4, 10, 56, 78 -7, -45, 0, 2, 4, 10, 56, 78 -45, -7, 0, 2, 4, 10, 56, 78

Tri à Bulles optimisé

  • Problème : traitements inutiles

Exemple: 2, 56, 4, 7, 40, 78, 65, 45 2, 4, 7, 40, 56, 65, 45, 78 2, 4, 7, 40, 56, 45, 65, 78 2, 4, 7, 40, 45, 56, 65, 78 2, 4, 7, 40, 45, 56, 65, 78 2, 4, 7, 40, 45, 56, 65, 78 2, 4, 7, 40, 45, 56, 65, 78

Tri à Bulles optimisé

boolvrai; /* quand il n’y a aucun échange le tableau est trié*/ i1; Tantque (bool=vrai) faire boolfaux; Pour j :=1 à n-i faire Si (A[j]> A[j+1]) alors échanger(A[j], A[j+1]); boolvrai; Fsi ; Fait ; ii+1; Fait ;

Tri fusion et tri Rapide

MergeSort QuickSort

5 3 2 9 4 6 5 3 2 9 4 6

2 3 4 5 6 9 2 3 4 5 6 9

5 3 2 9 4 6 5

2 3 5 4 6 9

3 2 4 9 6

2 3 4 5 6 9

Tri Rapide (QuickSort)

  • Principe
    • Déterminer un pivot au hasard (e.g. premier élément)
    • Séparer les données en 2 parties:
      • <= pivot
      • = pivot - Mettre ensemble: ≤pivot + (pivot) + ≥pivot

Tri Rapide (QuickSort)

Fonction partition(E/T:tableau[n] entiers, d, f : entier):entier

i, j, pivot : entier;

Début pivot  T[d]; id; jf;

Tantque (i < j) faire

Tantque (i ≤ f) et (T[i] ≤ pivot) faire ii+1; fait; Tantque (j>d) et (T[j] > pivot) faire jj-1; fait; si (i < j) alors permuter(T, i, j); ii+1; jj-1; fsi; fait; si (d≠j) alors permute(T, d, j); fsi; retourner j;

Fin;

Tri Rapide (QuickSort)

pivot  T[d]; id; jf; tantque (i < j) faire tantque (i ≤ f) et (T[i] ≤ pivot) faire ii+1; fait; tantque (j>d) et (T[j] > pivot) faire jj-1; fait; si (i < j) alors permuter(T, i, j); ii+1; jj-1; fsi; fait; si (d≠j) alors permute(T, d, j); fsi; retourner j; Fin;

Complexité des algorithmes de tri

Arbre binaire de recherche (ABR) le parcours en

infixé permet d’afficher les valeurs dans l’ordre

croissant (ou décroissant) O(nlogn).

  • La construction de l’arbre ~ O(nlogn)
  • L’affichage des valeurs ~ O(n)

Inconvénient : espace mémoire occupé

Tri Dénombrement

(Tri sans comparaison)